In [ ]:
from google.colab import drive
drive.mount('/content/drive')
%cd /content/drive/MyDrive/HW2
Mounted at /content/drive
/content/drive/MyDrive/HW2

RQ 1: Exploratory Data Analysis¶

We import the necessary libraries and set the dataset paths.

In [ ]:
import pandas as pd
import json
import numpy as np
import matplotlib.pyplot as plt
import datetime
In [ ]:
authors_set = 'lighter_authors.json'
books_set = 'lighter_books.json'

Loading the Authors Dataset

In [ ]:
chunk_size = 50000
authors = pd.DataFrame()
# Looping through each chunk and append it to the result dataframe
for chunk in pd.read_json(authors_set, lines=True, chunksize=chunk_size):
    authors = pd.concat([authors, chunk], ignore_index=True)

We have employed chunking of the two datasets authors and books in order to use less RAM for our answers to the questions.

In [ ]:
authors.head(5)
Out[ ]:
ratings_count average_rating text_reviews_count work_ids book_ids works_count id name gender image_url about fans_count
0 2862064 4.19 62681 [3078186, 135328, 1877624, 74123, 3078120, 104... [386162, 13, 8695, 8694, 6091075, 365, 569429,... 106 4 Douglas Adams male https://images.gr-assets.com/authors/159137433... Douglas Noël Adams was an English author, comi... 19826
1 1417316 4.02 84176 [613469, 2305997, 940892, 2611786, 7800569, 31... [9791, 21, 28, 24, 7507825, 27, 10538, 25, 26,... 75 7 Bill Bryson male https://images.gr-assets.com/authors/157859752... William McGuire "Bill" Bryson, OBE, FRS was bo... 16144
2 56159 4.53 352 [17150, 808427, 20487307, 90550, 25460625, 171... [349254, 15222, 14833682, 15221, 18126815, 152... 14 10 Jude Fisher female https://images.gr-assets.com/authors/141145711... Jude Fisher is the pseudonym for <a href="http... 60
3 3302 3.79 480 [4417, 14300808, 14780, 3796968, 44703121, 103... [40, 9416484, 12482, 3753106, 26889789, 104764... 45 12 James Hamilton-Paterson male https://images.gr-assets.com/authors/127051738... James Hamilton-Paterson's work has been transl... 72
4 7979 3.60 772 [13330815, 19109351, 42306244, 72694240, 26291... [8466327, 15739968, 22756778, 51026133, 260451... 61 14 Mark Watson male https://images.gr-assets.com/authors/133175379... Mark Andrew Watson (born 13 February 1980) is ... 179

Data Cleaning on Authors

In [ ]:
authors2 = authors
In [ ]:
authors2.describe()
Out[ ]:
ratings_count average_rating text_reviews_count works_count id fans_count
count 3.517670e+05 351767.000000 351767.000000 3.517670e+05 3.517670e+05 351767.000000
mean 4.770586e+03 3.651194 330.993243 2.593714e+01 7.751861e+06 111.615731
std 9.769395e+04 1.211482 3857.539191 3.066083e+03 6.578409e+06 2661.018139
min -4.100000e+01 -31.000000 0.000000 0.000000e+00 4.000000e+00 -33.000000
25% 6.000000e+00 3.600000 1.000000 2.000000e+00 1.535315e+06 1.000000
50% 3.900000e+01 3.950000 8.000000 6.000000e+00 6.470396e+06 4.000000
75% 3.100000e+02 4.250000 53.000000 1.500000e+01 1.434041e+07 20.000000
max 2.700375e+07 5.000000 608956.000000 1.775176e+06 2.124802e+07 766035.000000

Looking at the negative minimum values of the numeric columns in this description, we decide to filter those out.

In [ ]:
authors2 = authors2[(authors2[["fans_count", "average_rating", "ratings_count", "text_reviews_count", "works_count"]] >= 0).all(axis=1)]
In [ ]:
authors2.dropna(inplace=True)
<ipython-input-9-26e85020d60f>:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  authors2.dropna(inplace=True)

We have done the basic data cleaning over the authors dataset for the general EDA, if required, we will need to clean specific columns in specific questions. So we will use the cleaned version authors2 dataframe in the following answers of RQ 1 to 6.

Loading the Books Dataset

In [ ]:
chunk_size = 40000
# Initializing an empty list to store chunks
books = pd.DataFrame()
# Looping through each chunk and append it to the result dataframe
for chunk in pd.read_json(books_set, lines=True, chunksize=chunk_size):
    selected_chunk = chunk[["author_id","title", "num_pages", "language", "average_rating", "ratings_count","text_reviews_count", "author_name", "original_publication_date", "publication_date","format","series_id","series_name","series_position"]]
    # Appending the selected chunk to the list
    books = pd.concat([books, selected_chunk], ignore_index=True)

We have selected all the necessary columns we need to answer Questions RQ 1 to 6 in a single loading of the dataset. As we have memory constraints, we have separate notebooks to answer RQ 7 and 8 which we have merged to the final notebook: main_solution.ipynb

In [ ]:
books.head(5)
Out[ ]:
author_id title num_pages language average_rating ratings_count text_reviews_count author_name original_publication_date publication_date format series_id series_name series_position
0 1077326 Harry Potter and the Order of the Phoenix (Har... 870 eng 4.50 2628006 44716 J.K. Rowling 2003-06-21 2004-09 Paperback 45175 Harry Potter 5
1 1077326 Harry Potter and the Sorcerer's Stone (Harry P... 309 eng 4.48 7377351 116930 J.K. Rowling 1997-06-26 2003-11-01 Hardcover 45175 Harry Potter 1
2 1077326 Harry Potter and the Chamber of Secrets (Harry... 352 eng 4.43 2855044 55286 J.K. Rowling 1998-07-02 2003-11-01 Hardcover 45175 Harry Potter 2
3 1077326 Harry Potter and the Prisoner of Azkaban (Harr... 435 eng 4.57 2946694 58023 J.K. Rowling 1999-07-08 2004-05-01 Mass Market Paperback 45175 Harry Potter 3
4 1077326 Harry Potter and the Goblet of Fire (Harry Pot... 734 eng 4.56 2705676 48637 J.K. Rowling 2000-07-08 2002-09-28 Paperback 45175 Harry Potter 4
In [ ]:
books.describe()
Out[ ]:
author_id average_rating ratings_count text_reviews_count
count 7.027431e+06 7.027431e+06 7.027431e+06 7.027431e+06
mean 1.977793e+06 3.306188e+00 1.945861e+04 6.417258e+02
std 3.210660e+06 1.435734e+00 1.609008e+05 4.169806e+03
min 4.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00
25% 3.368200e+04 3.360000e+00 3.000000e+00 0.000000e+00
50% 2.499460e+05 3.810000e+00 4.500000e+01 5.000000e+00
75% 3.239281e+06 4.080000e+00 7.710000e+02 6.400000e+01
max 2.124802e+07 5.000000e+00 7.400639e+06 1.745240e+05

Data Cleaning on books:

In [ ]:
books2 = books
In [ ]:
books2.dropna(subset=["author_id","title", "num_pages", "language", "average_rating", "ratings_count", "author_name", "original_publication_date", "publication_date","text_reviews_count","format","series_id","series_name","series_position"], inplace=True)
In [ ]:
books2.shape[0]
Out[ ]:
7027431

We have done the generic data cleaning on the books to move forward with the cleaner version books2 to answer the subsequent questions.

Exploratory Data Analysis on Authors set:

In [ ]:
media = authors2['average_rating'].mean()
mediana = authors2['average_rating'].median()
minimo = authors2['average_rating'].min()
massimo = authors2['average_rating'].max()

print("Base statistics on average_rating")
print("mean", round(media, 2))
print("median", mediana)
print("min and max", minimo, massimo)

plt.boxplot(authors2["average_rating"], showfliers=True, patch_artist=True, boxprops={'facecolor': 'lightblue', 'linestyle': '--', 'linewidth': 2})
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.title("Box-plot of average_rating")
plt.show
Base statistics on average_rating
mean 3.65
median 3.95
min and max 0.0 5.0
Out[ ]:
<function matplotlib.pyplot.show(close=None, block=None)>

From this, we summarize that the mean average rating of authors is 3.65 in a range of 0.0 to 5.0 and the median is 3.95 which essentially means 50% of the sample population fall between the average rating of 0 and 3.95.

In [ ]:
media = authors2['fans_count'].mean()
mediana = authors2['fans_count'].median()
minimo = authors2['fans_count'].min()
massimo = authors2['fans_count'].max()

print("Base statistics on fans_count")
print("mean", round(media, 2))
print("median", mediana)
print("min and max", minimo, massimo)

plt.boxplot(authors2["fans_count"], patch_artist=True, boxprops={'facecolor': 'lightblue', 'linestyle': '--', 'linewidth': 2}, showfliers=True)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.title("Box-plot of fans_count")
plt.show
Base statistics on fans_count
mean 111.62
median 4.0
min and max 0 766035
Out[ ]:
<function matplotlib.pyplot.show(close=None, block=None)>

Fans count is rather stretched in a vast range of 0 to 766035 with a mean at 111.62 and median at 4.0 with a very high variance.

In [ ]:
media = authors2['ratings_count'].mean()
mediana = authors2['ratings_count'].median()
minimo = authors2['ratings_count'].min()
massimo = authors2['ratings_count'].max()

print("Base statistics on ratings_count")
print("mean", round(media, 2))
print("median", mediana)
print("min and max", minimo, massimo)

plt.boxplot(authors2["ratings_count"], patch_artist=True, boxprops={'facecolor': 'lightblue', 'linestyle': '--', 'linewidth': 2}, showfliers=True)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.title("Box-plot of fans_count")
plt.show
Base statistics on ratings_count
mean 4770.95
median 39.0
min and max 0 27003752
Out[ ]:
<function matplotlib.pyplot.show(close=None, block=None)>

ratings count is also showing a high variance with mean at 4770.95 and median at 39 in a range of 0 to 27002752

In [ ]:
count_output = authors2['gender'].value_counts().reset_index()
count_output.columns = ['gender', 'count']
count_output_ordinato = count_output.sort_values(by='count', ascending=False)
count_output_ordinato = count_output_ordinato[count_output_ordinato["gender"] != ""]
malefemale = count_output_ordinato[count_output_ordinato["gender"].isin(["male", "female"])]
others = pd.DataFrame({"gender": ["other"], "count": [count_output_ordinato["count"].sum() - malefemale["count"].sum()]})
malefemale = pd.concat([malefemale, others], ignore_index=True)
plt.figure(figsize=(6, 6))
plt.pie(malefemale['count'], labels=malefemale['gender'], autopct='%1.1f%%', colors=['lightblue', 'lightgreen', 'lightcoral'], startangle=140)
plt.title('')
plt.axis('equal')
plt.show()

We have considered the major two Genders Male and Female and clubbed all other genders in the Others category and found that 55.6% of the sample population are males and 44.2% are females and 0.1% falling in the others category.

Exploratory Data Analysis on Books Set

In [ ]:
media = books2['average_rating'].mean()
mediana = books2['average_rating'].median()
minimo = books2['average_rating'].min()
massimo = books2['average_rating'].max()

print("Base statistics on average_rating")
print("mean", round(media, 2))
print("median", round(mediana, 2))
print("min and max", minimo, massimo)

plt.boxplot(books2["average_rating"], patch_artist=True, boxprops={'facecolor': 'lightblue', 'linestyle': '--', 'linewidth': 2}, showfliers=True)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.title("Box-plot of average_rating")
plt.show
Base statistics on average_rating
mean 3.31
median 3.81
min and max 0.0 5.0
Out[ ]:
<function matplotlib.pyplot.show(close=None, block=None)>

Average rating in the books dataset has a mean at 3.31 with a median at 3.81 in a range of 0.0 to 5.0, it reflects less variance as standard deviation is 1.4 compared to others.

In [ ]:
media = books2['ratings_count'].mean()
mediana = books2['ratings_count'].median()
minimo = books2['ratings_count'].min()
massimo = books2['ratings_count'].max()

print("Base statistics on ratings_count")
print("mean", round(media, 2))
print("median", round(mediana, 2))
print("min and max", minimo, massimo)

plt.boxplot(books2["ratings_count"], patch_artist=True, boxprops={'facecolor': 'lightblue', 'linestyle': '--', 'linewidth': 2}, showfliers=True)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.title("Box-plot of ratings_count")
plt.show
Base statistics on ratings_count
mean 19458.61
median 45.0
min and max 0 7400639
Out[ ]:
<function matplotlib.pyplot.show(close=None, block=None)>

Ratings count has a large variance with a mean at 19458.61 but a median at 45.0

In [ ]:
books2clean = books2[books2["language"] != ""]
conteggio_output = books2clean['language'].value_counts().reset_index()
conteggio_output.columns = ['language', 'count']
conteggio_output = conteggio_output.dropna()  # Rimuovo le righe con valori mancanti
conteggio_output_ordinato = conteggio_output.sort_values(by='count', ascending=False)
print(conteggio_output_ordinato.head(10))

primi10 = conteggio_output_ordinato.head(10)
plt.bar(primi10["language"], primi10['count'])
plt.xlabel('Languages')
plt.ylabel('Count')
plt.show()
  language    count
0      eng  1372114
1      ger   148087
2      spa   137292
3      ita   125287
4      fre   121062
5    en-US    85551
6      por    73162
7    en-GB    70281
8       nl    63853
9      ara    51034

Initially doing this plot revealed that the language column has a lot of empty values with the highest count, hence we cleaned the dataset further specific to the language attribute to negate empty cells in the language column and used books2clean for this analysis and found that, Books in English language has the highest count with the count of german, spanish,italianb and other european languages much lesser and closer to each other. Although, to do a simplistic visualisation we have considered the top 10 languages in terms of count.

RQ 2: Retrieving some vital information:¶

Plot the number of books for each author in descending order.¶

In [ ]:
books2=books2[books2['author_name']!='Anonymous']
books2=books2[books2['author_name']!='']
books2=books2[books2['author_name']!='Various']
books2=books2[books2['author_name']!='Unknown']
books2=books2[books2['author_name']!='NOT A BOOK']
books2=books2[books2['author_name']!='Source Wikipedia']
#book_clean=book_clean[book_clean['title']!='']

While doing the plot in the next cells, I found a lot of such weird author names with high number of books, hence I have specifically removed them out from my books2 dataframe.

In [ ]:
books2.drop_duplicates(subset = ["author_name","title"], keep="first", inplace=True)

For the combination of authors and titles, we have dropped all subsequent duplicate occurrences.

In [ ]:
books2.shape[0]
Out[ ]:
4145044
In [ ]:
author_book_counts = books2.groupby(['author_name','author_id'])['title'].count().reset_index().sort_values(by='title', ascending=False)[:50]

Taking the top 50 authors according to book counts and storing in author_book_counts dataframe.

In [ ]:
# author names and book counts for top 50 authors
plt.figure(figsize=(12, 6))
plt.bar(author_book_counts['author_name'], author_book_counts['title'])
plt.xticks(rotation=90)
plt.xlabel('Author Name')
plt.ylabel('Number of Books')
plt.title('Number of Books for Top 50 Authors')
plt.show()

We have done the plot for the top 50 authors in terms of number of books and found that Jesse Russell has the highest number of books followed by Phillip M. Parker. CS Lewis falls in the very last of the list.

Which book has the highest number of reviews?¶

In [ ]:
books2_sorted = books2.sort_values(by='text_reviews_count', ascending=False).reset_index()[:5]
print(f"The book with the highest number of text reviews is '{books2_sorted['title'][0]}' with {books2_sorted['text_reviews_count'][0]} reviews.")
The book with the highest number of text reviews is 'Arena smrti (Igre lakote #1)' with 174518 reviews.

To identify the highest number of reviews, I considered the text reviews count and found that Arena smrti (Igre lakote #1) has got the highest.

Which are the top ten and ten worst books concerning the average score?¶

In [ ]:
# Sorting books by average rating in descending order for the top ten
ten_best_books = books2.nlargest(10, 'average_rating')[['title','average_rating']]
# Sorting books by average rating in ascending order for the ten worst
ten_worst_books= books2.nsmallest(10, 'average_rating')[['title','average_rating']]
# Printing the top ten and ten worst books
print("Top Ten Books with Highest Average Rating:\n")
print(ten_best_books)
print("\nTen Worst Books with Lowest Average Rating:\n")
print(ten_worst_books)
Top Ten Books with Highest Average Rating:

                                                  title  average_rating
178   Later Letters of Edward Lear to Chichester For...             5.0
386                     Lord of the Flies Activity Pack             5.0
653                                          Bernie Mac             5.0
671   Delaware 1638-1776 (Voices from Colonial America)             5.0
721   Simply Italian: 100 Easy-To-Make, Zesty, Satis...             5.0
762                                    Rudolph Giuliani             5.0
1101           Singers, Heroes, and Gods in the Odyssey             5.0
1120  Fanaroff and Martin's Neonatal-Perinatal Medic...             5.0
1213                                   A Den Of Thieves             5.0
1252  Comoediae 1: Acharenses/Equites/Nubes/Vespae/P...             5.0

Ten Worst Books with Lowest Average Rating:

                                                  title  average_rating
526                                  A More Perfect Way             0.0
527                                      Fields of Gold             0.0
530                Justitiemord: Fallet Keith Cederholm             0.0
570                     The Rain Falls Like Rain: Poems             0.0
654   Riches in Real Estate: A Beginner's Guide to G...             0.0
772   J.K.Lasser Pro Real Estate Investment Trusts: ...             0.0
780                      Juiced Official Strategy Guide             0.0
816   The Platonism of Marsilio Ficino: A Study of H...             0.0
1017   The Nightingale Question: Five Poets from Saxony             0.0
1117                 Instant Songwriting with the Piano             0.0

Explore the different languages in the book’s dataset, providing a proper chart summarizing how these languages are distributed throughout our virtual library.¶

For exploring the languages, earlier we had cleaned the dataset in terms of language as 'books2clean' and we will use that here:

In [ ]:
lang_counts = books2clean['language'].value_counts().reset_index()
lang_counts.columns = ['language', 'count']  # Correcting the column assignment
(lang_counts.shape[0])

top50lang = lang_counts.head(50)
(top50lang.head(2))

top10lang = lang_counts[lang_counts["language"].isin(["eng", "ger", "spa", "fre", "ita", "en-US", "por", "en-GB", "nl", "ara"])]
(top10lang.head(10))

riga_altro = pd.DataFrame({"language": ["other 244 languages"], "count": [lang_counts["count"].sum() - top10lang["count"].sum()]})
top10lang = pd.concat([top10lang, riga_altro], ignore_index=True)

plt.figure(figsize=(8, 8))
plt.pie(top10lang['count'], labels=top10lang['language'], autopct='%1.1f%%', colors=['blue', 'green', 'red', 'yellow', 'orange', 'purple', 'pink', 'lightblue', 'brown', 'gray', 'cyan'], startangle=140)
plt.title('')
plt.axis('equal')
plt.show()

To do this analysis, we have taken top 10 languages in terms of their frequency of occurrences and clubbed all other languages in the others category. Then we found that English is 51.1% which conveys half of the books in the entire dataset are written in English followed by German (5.5%), Spanish (5.1%) when ranked in terms od their frequency.

In [ ]:
plt.hist(lang_counts['count'], bins=50, edgecolor='k')
plt.xlabel('Number of books')
plt.ylabel('Number of languages')
plt.title('Distribution of number of books per languages')
plt.show()

How many books have more than 250 pages?¶

In [ ]:
books2['num_pages'] = pd.to_numeric(books2['num_pages'], errors='coerce')
In [ ]:
print(f'Number of books with more than 250 pages is {books2[(books2[["num_pages"]] > 250).all(axis=1)].shape[0]}')
Number of books with more than 250 pages is 1060768

Plot the distribution of the fans count for the 50 most prolific authors (the ones who have written more books).¶

In the previous questions earlier, we found out the top 50 authors in terms of book counts from the books dataset and stored them into author_book_counts dataframe, now we will extract the top 50 authors from there and merge with the authors dataset matching with author_name and author_id as the primary keys.

In [ ]:
top50author = author_book_counts
top50author = top50author.rename(columns={"author_name": "name","author_id":"id"})
In [ ]:
merged_df = pd.merge(top50author, authors2, on=['name','id'], how='left')
In [ ]:
merged_df.shape[0]
Out[ ]:
50
In [ ]:
merged_df=merged_df.sort_values(by='fans_count', ascending=False)
In [ ]:
merged_df[["name","fans_count"]].head(5)
Out[ ]:
name fans_count
25 Stephen King 766035
46 James Patterson 317040
6 Agatha Christie 44456
20 Nora Roberts 41402
27 Fyodor Dostoyevsky 37150
In [ ]:
# Plot the distribution of fans count
plt.figure(figsize=(8, 4))
plt.hist(merged_df['fans_count'], bins=30, edgecolor='k')
plt.xlabel('Fans Count')
plt.ylabel('Number of Authors')
plt.title('Distribution of Fans Count for the 50 Most Prolific Authors')
plt.show()
In [ ]:
plt.figure(figsize=(25, 5))
plt.bar(merged_df['name'], merged_df['fans_count']/100000) #i have normalized the count
plt.xticks(rotation=90)
plt.xlabel('Author Name')
plt.ylabel('Fans Count')
plt.yticks(np.arange(0, 9, step=1))
plt.title('Fans Count for Top 50 Prolific Authors')
plt.show()

As the plot shows, Stephen King has got the highest fans count followed by James Patterson and Agatha Christie among the top 50 authors.

In [ ]:
plt.figure(figsize=(6, 3))
plt.boxplot(merged_df['fans_count'], vert=False)
plt.xlabel('Fans Count')
plt.title('Distribution of Fans Count for the 50 Most Prolific Authors (Box Plot)')
plt.show()

RQ 3: Historical look at the dataset!¶

In [ ]:
# num_pages field needs data cleaning
books2 = books2[books2['num_pages'].notna()]
books2 = books2[books2['num_pages'] != 0]
In [ ]:
#data cleaning on original publication date
from datetime import datetime
books2["original_publication_date"] = pd.to_datetime(books2["original_publication_date"], errors='coerce')
books2["original_publication_date"] = pd.to_datetime(books2["original_publication_date"])
present_date = datetime.now()
books2 = books2[books2['original_publication_date'] <= present_date]
books2["original_publication_date"].max()
Out[ ]:
Timestamp('2023-10-14 00:00:00')
In [ ]:
books2["original_publication_date"].min()
Out[ ]:
Timestamp('1678-01-01 00:00:00')

My vision of work is that I am considering the original publication date values which are valid values starting from 01 January 1678 till 14 October 2023 and other dates which are in the farthest future, way above the present date, I am not considering because those books have not been published yet referring to unrequired data as I am working with books which are already punlished.

Write a function that takes as input a year and returns as output the following information:¶

The number of books published that year.

The total number of pages written that year.

The most prolific month of that year.

The longest book written that year.

In [ ]:
def books_info_for_year(year):

    books_in_year = books2[books2['original_publication_date'].dt.year == year]

    # total number of books published in the given year
    Num_Books = len(books_in_year)

    # total number of pages written in the given year
    Total_Pages = books_in_year.loc[:,'num_pages'].sum()

    # to count the most prolific month
    #books_in_year['publication_month'] = books_in_year['original_publication_date'].dt.month
    books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month

    Most_Prolific_Month = None
    longest_book = None

    if not books_in_year.empty:
        # to find the most prolific month
        #books_in_year['month'] = books_in_year['original_publication_date'].dt.month
        books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
        Most_Prolific_Month = books_in_year['month'].value_counts().idxmax()

        # the longest book written in that year
        longest_book = books_in_year[books_in_year['num_pages'] == books_in_year['num_pages'].max()]['title'].values[0]



    return Num_Books, Total_Pages, Most_Prolific_Month, longest_book
In [ ]:
import time
year = 2005
start_time=time.time()
result = books_info_for_year(year)
end_time=time.time()
print(result)
print(f"Time taken: {end_time - start_time:.2f} seconds")
(63973, 16853752.0, 1, 'The Great Adventure Cookbook: Trail-Tested Recipes from Leading Backcountry Adventures')
Time taken: 0.54 seconds
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month

Use this function to build your data frame: the primary key will be a year, and the required information will be the attributes within the row. Finally, show the head and the tail of this new data frame considering the first ten years registered and the last ten years.¶

In [ ]:
years = books2['original_publication_date'].dt.year.unique()
yearly_info = pd.DataFrame(columns=['Year', 'Num_Books', 'Total_Pages', 'Most_Prolific_Month', 'Longest_Book'])
start_time=time.time()
for year in years:
  Num_Books, Total_Pages, Most_Prolific_Month, Longest_Book = books_info_for_year(year)
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)

end_time=time.time()
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-58-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-58-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-60-771fd65b3bb4>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
In [ ]:
print(f"Time taken to load DF: {end_time - start_time:.2f} seconds")
Time taken to load DF: 114.42 seconds
In [ ]:
print(yearly_info.head(10))
   Year Num_Books   Total_Pages Most_Prolific_Month  \
0  2003     56217  1.490876e+07                   1   
1  1997     39896  2.160443e+09                   1   
2  1998     42232  1.127554e+07                   1   
3  1999     44409  1.188484e+07                   1   
4  2000     49752  1.336568e+07                   1   
5  2005     63973  1.685375e+07                   1   
6  1979     12394  3.289386e+06                   1   
7  1996     36964  9.925570e+06                   1   
8  2002     52445  1.396145e+07                   1   
9  1984     16501  4.365857e+06                   1   

                                        Longest_Book  
0  Reformation Bookshelf Cd (Volume 19 Of 30) The...  
1                                  שלושה סיפורי אהבה  
2     American Men & Women of Science (8-Volume Set)  
3  Theological and Miscellaneous Works of Joseph ...  
4                 Combo - As Crônicas de Gelo e Fogo  
5  The Great Adventure Cookbook: Trail-Tested Rec...  
6                     Gordana kraljica Hrvata (1-12)  
7     The Persian Encyclopedia (دايرة المعارف فارسى)  
8  21st Century Complete Guide to the Gulf War, O...  
9                             تفسير التحرير والتنوير  
In [ ]:
print(yearly_info.tail(10))
     Year Num_Books  Total_Pages Most_Prolific_Month  \
336  1690        31       6593.0                   1   
337  1770        23       6491.0                   1   
338  1715        22      10394.0                   4   
339  1735        15       5065.0                   1   
340  1679         9       1666.0                   1   
341  1718        10       2986.0                   1   
342  1694         9       1095.0                   1   
343  2021        21       8432.0                   1   
344  2022         6        979.0                  12   
345  2023         3        875.0                   9   

                                          Longest_Book  
336             Versuch �ber den menschlichen Verstand  
337          Travels Into North America - 3 Volume Set  
338                             Gil Blas de Santillane  
339  Mémoires du chevalier d'Arvieux, envoyé extrao...  
340  Strange Stories from a Chinese Studio, Vol. 1 ...  
341                                 História do Futuro  
342  The Spiritual Doctrine of Father Louis Lallema...  
343  The Navigator's Children (The Last King of Ost...  
344  Highland Ever After (The Montgomerys and Armst...  
345                                         Apocalypse  

Ask ChatGPT or any other LLM chatbot tool to implement this function and compare your work with the one the bot gave you as an answer. Does the chatbot implementation work? Please test it out and verify the correctness of the implementation, explaining the process you followed to prove it.¶

In [ ]:
# Following implementation is done by Chat GPT 4.0:

def books_info(year):
    # filter the dataframe by the given year
    books_in_year = books2[books2['original_publication_date'].dt.year == year]

    # calculate the number of books published that year
    num_books = books_in_year.shape[0]

    # calculate the total number of pages written that year
    total_pages = books_in_year['num_pages'].sum()

    # calculate the most prolific month of that year
    most_prolific_month = books_in_year['original_publication_date'].dt.month.value_counts().idxmax()

    # find the longest book written that year
    longest_book = books_in_year.loc[books_in_year['num_pages'].idxmax()]['title']

    return {
        "Number of books published": num_books,
        "Total number of pages": total_pages,
        "Most prolific month": most_prolific_month,
        "Longest book": longest_book,
    }
In [ ]:
import time
year = 2005
start_time=time.time()
result = books_info(year)
end_time=time.time()
print(result)
print(f"Time taken: {end_time - start_time:.2f} seconds")
{'Number of books published': 63973, 'Total number of pages': 16853752.0, 'Most prolific month': 1, 'Longest book': 'The Great Adventure Cookbook: Trail-Tested Recipes from Leading Backcountry Adventures'}
Time taken: 0.56 seconds
In [ ]:
# Following function is implemented by Bard LLM of Google:

import pandas as pd

def get_book_stats_by_year(books2, year):
  """Get book stats by year.

  Args:
    books2: A pandas DataFrame containing book data.
    year: The year to get book stats for.

  Returns:
    A dictionary containing the following information:
      * The number of books published that year.
      * The total number of pages written that year.
      * The most prolific month of that year.
      * The longest book written that year.
  """

  # Filter the books2 DataFrame to only include books published in the given year.
  books_by_year = books2[books2['original_publication_date'].dt.year == year]

  # Get the number of books published that year.
  num_books_published = len(books_by_year)

  # Get the total number of pages written that year.
  total_pages_written = books_by_year['num_pages'].sum()

  # Get the most prolific month of that year.
  most_prolific_month = books_by_year['original_publication_date'].dt.month.value_counts().nlargest(1).index[0]

  # Get the longest book written that year.
  longest_book = books_by_year[books_by_year['num_pages'] == books_by_year['num_pages'].max()]

  return {
    'num_books_published': num_books_published,
    'total_pages_written': total_pages_written,
    'most_prolific_month': most_prolific_month,
    'longest_book': longest_book
  }
In [ ]:
import time
year = 2005
start_time=time.time()
result = get_book_stats_by_year(books2,year)
end_time=time.time()
print(result)
print(f"Time taken: {end_time - start_time:.2f} seconds")
{'num_books_published': 63973, 'total_pages_written': 16853752.0, 'most_prolific_month': 1, 'longest_book':          author_id                                              title  \
3686219     323872  The Great Adventure Cookbook: Trail-Tested Rec...   

         num_pages language  average_rating  ratings_count  \
3686219     8950.0                      0.0              0   

         text_reviews_count            author_name original_publication_date  \
3686219                   0  McGraw-Hill Education                2005-12-01   

        publication_date     format series_id series_name series_position  
3686219       2005-12-01  Hardcover                                        }
Time taken: 0.63 seconds

Analyis and Remarks on the LLM Implementation:

The implementation by Chat GPT is commendable as the results are just the similar. To compare the time taken by my function and by Chat GPT I have separately printed the time taken in the results. My function books_info_for_year prints the result in 0.54 seconds, while the implementation by Chat GPT takes 0.56 seconds but the same by Google Bard LLM takes 0.63 seconds. Anyhow, the core logic of defining the function remains same in either cases. Chat GPT can atmost be a complement to my own work but not a substitute for it.

RQ 4: Quirks questions about consistency.¶

You should be sure there are no eponymous (different authors who have precisely the same name) in the author's dataset. Is it true?¶

In [ ]:
eponymous_authors = authors2[authors2.duplicated('name', keep=False)]
if not eponymous_authors.empty:
    print("Eponymous authors found: "+str(eponymous_authors.shape[0]))
    print(eponymous_authors['name'])
Eponymous authors found: 74
1569             Peter King
4792            David Yates
6414            Paul Graham
7193          Peter  Davies
8639        Peter  Marshall
                ...        
314855        Dimitar Dimov
315853    James C.L. Carson
319671        Erin  Bedford
337525              Cicerón
345485        Erin  Bedford
Name: name, Length: 74, dtype: object

Thus, we have got 74 eponymous authors in the authors dataset

Write a function that, given a list of author_id, outputs a dictionary where each author_id is a key, and the related value is a list with the names of all the books the author has written.¶

In [ ]:
def get_author_books_v0(author_ids):
    author_books = {}
    for author_id in author_ids:
        matching_rows = authors2[authors2['id'] == author_id]
        if not matching_rows.empty:
            author_name = matching_rows.iloc[0]['name']
            # Check if 'author_name' is present in the 'books2' DataFrame
            if 'author_name' in books2.columns:
                books = books2[books2['author_name'] == author_name]['title'].tolist()
                author_books[author_name] = books
            else:
                # Handle the case where 'author_name' column is not found
                author_books[author_name] = ["Author's Books Not Found"]
        else:
            # Handle the case where no matching author is found
            author_books[author_name] = ["Author Not Found"]

    return author_books

What is the longest book title among the books of the top 20 authors regarding their average rating? Is it the longest book title overall?¶

Top 20 authors by average rating

In [ ]:
top_20_authors_v0 = authors2.nlargest(20, 'average_rating')
top_20_author_ids_v0 = top_20_authors_v0['id'].tolist()

Get books of the top 20 authors

In [ ]:
top_20_author_books_v0 = get_author_books_v0(top_20_author_ids_v0)
In [ ]:
longest_title_v0 = max(max(top_20_author_books_v0.values(), key=len), key=len)
In [ ]:
overall_longest_title_v0 = max(books2['title'], key=len)
In [ ]:
shortest_title_v0 = min(books2['title'], key=len)
In [ ]:
print("Top 20 authors' books:")
for author, books in top_20_author_books_v0.items():
    print(f"{author}: {books}")
Top 20 authors' books:
James T. Holmes: []
Georges Wellers: ['From Drancy to Auschwitz']
Jessie (Pierce) Trebesch: []
Staci Mauney: []
D.S.  Brown: []
George  Johnston: []
Patience Normoyle: []
Robert Sidney: ['The Poems of Robert Sidney']
Christine K. Fields: []
Ondeane Lourens: []
Bonnie Kelso: []
Nikos Dimitriou: []
J.M. van Zuiden: []
Archimandrite Gabriel: []
Giada Nizzoli: []
Carlo de Incontrera: []
Ayush Ashish: []
Lavelle Carlson: []
Tiffany Post: []
Brenda DeMoss Lanz: []
In [ ]:
print(f"Longest book title among the top 20 authors: {longest_title_v0}")
Longest book title among the top 20 authors: From Drancy to Auschwitz
In [ ]:
if longest_title_v0 == overall_longest_title_v0:
    print("The longest book title among the top 20 authors is the same as the longest book title overall.")
else:
    print("The longest book title among the top 20 authors is not the same as the longest book title overall.")
The longest book title among the top 20 authors is not the same as the longest book title overall.
In [ ]:
print(f"Overall Longest book title is: {overall_longest_title_v0}")
Overall Longest book title is: A Commentary and Review of Montesquieu's Spirit of Laws, Prepared for Press from the Original Manuscript in the Hands of the Publisher (1811): To Which Are Annexed, Observations on the Thirty-First Book, by the Late M. Condorcet. and Two Letters of Hel...
In [ ]:
print(f"Shortest book title overall: {shortest_title_v0}")
Shortest book title overall: a

I can notice a lot of data of authors who have no books at all, this needs some further cleaning to do a proper analysis. Hence I will clean the authors dataset more according to the presence of author books in books dataset and redo the function implementations and answers to RQ 4 with an update to all the version 0 I did in the previous cells.¶

In [ ]:
authors_with_books = books2['author_name'].unique()
In [ ]:
authors_with_books
Out[ ]:
array(['J.K. Rowling', 'Douglas Adams', 'Bill Bryson', ...,
       'Charles W.  Lamb', 'Annie  Sullivan', 'Alexis Koetting'],
      dtype=object)
In [ ]:
authors_clean = authors2[authors2['name'].isin(authors_with_books)]
In [ ]:
authors_clean.shape[0]
Out[ ]:
229611
In [ ]:
def get_author_books(author_ids):
    author_books = {}
    for author_id in author_ids:
        matching_rows = authors_clean[authors_clean['id'] == author_id]
        if not matching_rows.empty:
            author_name = matching_rows.iloc[0]['name']
            # Check if 'author_id' is present in the 'books2' DataFrame
            if 'author_name' in books2.columns:
                books = books2[books2['author_name'] == author_name]['title'].tolist()
                author_books[author_name] = books
            else:
                # Handle the case where 'author_id' column is not found
                author_books[author_name] = ["Author's Books Not Found"]
        else:
            # Handle the case where no matching author is found
            author_books[author_name] = ["Author Not Found"]

    return author_books
In [ ]:
top_20_authors = authors_clean.nlargest(20, 'average_rating')
top_20_author_ids = top_20_authors['id'].tolist()
In [ ]:
top_20_author_books = get_author_books(top_20_author_ids)
In [ ]:
longest_title = max(max(top_20_author_books.values(), key=len), key=len)
In [ ]:
overall_longest_title = max(books2['title'], key=len)
In [ ]:
shortest_title = min(books2['title'], key=len)
In [ ]:
print("Top 20 authors' books:")
for author, books in top_20_author_books.items():
    print(f"{author}: {books}")
Top 20 authors' books:
Georges Wellers: ['From Drancy to Auschwitz']
Robert Sidney: ['The Poems of Robert Sidney']
Nancy Harding: ['The Social Construction of Management', 'The Social Construction Of Management (Inquiries In Social Construction Series)', 'On Being At Work: The Social Construction of the Employee']
Xavier Seoane Rivas: ['Presencias: a saudade do corredor de fondo', 'A dama da noite']
Mark D. Swartz: ["Get Wired, You're Hired!"]
John Iggulden: ['Breakthrough']
Henry S. Horn: ['Adaptive Geometry of Trees (Mpb-3), Volume 3']
Anne-Marie Corbin-Schuffels: ['Manes Sperber: Un Combat Contre La Tyrannie (1934-1960)']
Roland Winston: ['Nonimaging Optics', 'Selected Papers on Nonimaging Optics (S P I E Milestone Series)', 'Nonimaging Optics and Efficient Illumunation Systems: 2-4 August, 2004, Denver, Colorado, USA']
Sarah Pinter: ['The Crystal Shards', 'Electra']
Donald J. Young: ['The Shore of the Unknown: Poems', "Tom's War: Poems", 'Once by the Sea', 'The Ascending Star', 'New Vistas', 'Personal Notes', 'Selected Poems', 'Reflections in Our Time', 'Revelations', "Eisenhower's Party", 'The Listening Man', 'Reading the Old Testament for the First Time and a Sketch of the Jesus Myths', 'Short Takes', 'A Minor Engagement and Other Stories', 'The Ascending Star and Other Stories', 'Reflections: In Our Time II']
Marin Mersenne: ['Harmonie Universelle: The Books on Instruments', 'Cogitata Physico-Mathematica, Certissimis Demonstrationibus Explicantur (A0/00d.1644)', 'Novarum Observationum Physico-Mathematicarum F. Marini Mersenni, T III. (A0/00d.1647)', 'Harmonie Universelle, Contenant La Tha(c)Orie Et La Pratique de La Musique. Partie 1', 'Harmonie Universelle, Contenant La Tha(c)Orie Et La Pratique de La Musique. Partie 2']
Macdara Woods: ['The Nightingale Water', 'Notes from the Countries of Blood-Red Flowers', 'The Cotard Dimension', 'Collected Poems']
Hermann Oesterley: ['Hermann Oesterley: Wegweiser Durch Die Literatur Der Urkundensammlungen. Teil 1', 'Hermann Oesterley: Wegweiser Durch Die Literatur Der Urkundensammlungen. Teil 2', 'Gesta Romanorum Volume 1']
Aleksandr Zerkalov: ['Евангелие Михаила Булгакова', 'Евангелие Михаила Булгакова: Опыт исследования 4-х глав романа "Мастер и Маргарита"', 'Евангелие Михаила Булгакова: Опыт исследования ершалаимских глав романа "Мастер и Маргарита"']
Robert L. Hall: ['Gathered Visions: Selected Works by African American Women Artists']
T.A. Stone: ['Close to Home', 'No Place Like Home']
Александр Слонимский: ['Техника комического у Гоголя']
Lori Walters: ['The Day that Rocked the 4th Dimension']
Sean McSweeney: ['The On-And-On Tin']
In [ ]:
print(f"Longest book title among the top 20 authors: {longest_title}")
Longest book title among the top 20 authors: Reading the Old Testament for the First Time and a Sketch of the Jesus Myths
In [ ]:
if longest_title == overall_longest_title:
    print("The longest book title among the top 20 authors is the same as the longest book title overall.")
else:
    print("The longest book title among the top 20 authors is not the same as the longest book title overall.")
The longest book title among the top 20 authors is not the same as the longest book title overall.
In [ ]:
print(f"Overall Longest book title is: {overall_longest_title}")
Overall Longest book title is: A Commentary and Review of Montesquieu's Spirit of Laws, Prepared for Press from the Original Manuscript in the Hands of the Publisher (1811): To Which Are Annexed, Observations on the Thirty-First Book, by the Late M. Condorcet. and Two Letters of Hel...
In [ ]:
print(f"Shortest book title overall: {shortest_title}")
Shortest book title overall: a

RQ 5: Authors with the most fans to be influential. Let’s have a deeper look.¶

As we have cleaned the authors dataset further as authors_clean, we can use this dataset to answer this question.

Plot the top 10 most influential authors regarding their fan count and number of books. Who is the most influential author?¶

In [ ]:
top10fansbasis= authors_clean.nlargest(10,'fans_count')
In [ ]:
plt.figure(figsize=(8, 3))
plt.barh(top10fansbasis['name'], top10fansbasis['fans_count'])
plt.xlabel('Number of Fans')
plt.ylabel('Author Name')
plt.title('Top 10 Most Influential Authors on the basis of Fans count')
plt.gca().invert_yaxis()  # Inverting the y-axis to display the most influential at the top
plt.show()
In [ ]:
top10worksbasis=authors_clean.nlargest(10,'works_count')
In [ ]:
plt.figure(figsize=(8, 3))
plt.barh(top10worksbasis['name'], top10worksbasis['works_count'])
plt.xlabel('Number of Books')
plt.ylabel('Author Name')
plt.title('Top 10 Most Influential Authors on the basis of Number of Books')
plt.gca().invert_yaxis()  # Inverting the y-axis to display the most influential at the top
plt.show()

Now I will combine the two columns to find the overall influence based on the combined metrics.

In [ ]:
authors_clean['influence'] = authors_clean['fans_count'] * authors_clean['works_count']
<ipython-input-105-214fb8cd2b99>:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  authors_clean['influence'] = authors_clean['fans_count'] * authors_clean['works_count']
In [ ]:
top10authors=authors_clean.nlargest(10,'influence')
In [ ]:
plt.figure(figsize=(8, 3))
plt.barh(top10authors['name'], top10authors['influence'])
plt.xlabel('Combined Influence Metric')
plt.ylabel('Author Name')
plt.title('Top 10 Most Influential Authors based on Fans Count and Books Count')
plt.gca().invert_yaxis()  # Inverting the y-axis to display the most influential at the top
plt.show()

Hence, the Most Influential Author is Stephen King.

In [ ]:
influential_author_names = top10authors['name'].tolist()
In [ ]:
print(influential_author_names)
['Stephen King', 'William Shakespeare', 'James Patterson', 'Charles Dickens', 'Arthur Conan Doyle', 'Jane Austen', 'Agatha Christie', 'George R.R. Martin', 'Edgar Allan Poe', 'Oscar Wilde']

Have they published any series of books? If any, extract the longest series name among these authors.¶

I am filtering the dataset only on the basis of the top 10 influential author names:

In [ ]:
book_series_data = books2[books2['author_name'].isin(influential_author_names)]
In [ ]:
book_series_data.shape[0]
Out[ ]:
16284
In [ ]:
book_series_data.head(3)
Out[ ]:
author_id title num_pages language average_rating ratings_count text_reviews_count author_name original_publication_date publication_date format series_id series_name series_position
865 947 The Riverside Shakespeare 2057.0 eng 4.55 4270 202 William Shakespeare 1974-01-01 1997 Hardcover
867 947 The Norton Shakespeare 3420.0 4.57 1848 75 William Shakespeare 1972-01-01 1997 Hardcover
872 947 The Oxford Shakespeare: The Complete Works 1420.0 eng 4.61 864 56 William Shakespeare 1910-01-01 2005-08-01 Hardcover
In [ ]:
series = book_series_data.groupby('author_name')['series_name'].unique()
In [ ]:
series
Out[ ]:
author_name
Agatha Christie        [, Hercule Poirot, Miss Marple, Tommy & Tuppen...
Arthur Conan Doyle     [Sherlock Holmes, , The Adventures of Sherlock...
Charles Dickens        [, The Christmas Books, Master Humphrey's Cloc...
Edgar Allan Poe        [, C. Auguste Dupin, Tales of the Grotesque an...
George R.R. Martin     [A Song of Ice and Fire, , Wild Cards, The Art...
James Patterson        [, Alex Cross, Women's Murder Club, Maximum Ri...
Jane Austen                                                [, Juvenilia]
Oscar Wilde                               [, Fairy Tales of Oscar Wilde]
Stephen King           [The Dark Tower, , Skeleton Crew, The Talisman...
William Shakespeare    [, Poetry for Young People, The Nation's Favou...
Name: series_name, dtype: object
In [ ]:
longest_name = series.apply(lambda x: max(x, key=len)) #getting the longest series name out of each series in the top 10 authors.
In [ ]:
longest_name
Out[ ]:
author_name
Agatha Christie                 Hercule Poirot & Arthur Hastings Omnibus
Arthur Conan Doyle     Артур Конан Дойль. Собрание сочинений в восьми...
Charles Dickens               The Posthumous Papers of the Pickwick Club
Edgar Allan Poe        The Collected Supernatural and Weird Fiction o...
George R.R. Martin     Game of Thrones / Das Lied von Eis und Feuer (...
James Patterson                        The Best American Mystery Stories
Jane Austen                                                    Juvenilia
Oscar Wilde                                   Fairy Tales of Oscar Wilde
Stephen King                            Everything's Eventual [Japanese]
William Shakespeare                         The Nation's Favourite Poems
Name: series_name, dtype: object
In [ ]:
longest_series_name = longest_name[longest_name.str.len().idxmax()] #getting the longest series name out of the 10 series names

author_with_longest_series=", ".join(book_series_data[book_series_data['series_name']==longest_series_name]['author_name'].unique())
In [ ]:
print("Author with the Longest Series Name:", author_with_longest_series)
print("Longest Series Name:", longest_series_name)
Author with the Longest Series Name: Edgar Allan Poe
Longest Series Name: The Collected Supernatural and Weird Fiction of Edgar Allan Poe

How many of these authors have been published in different formats? Provide a meaningful chart on the distribution of the formats and comment on it.¶

In [ ]:
unique_formats = book_series_data.groupby('author_name')['format'].unique()
In [ ]:
unique_formats
Out[ ]:
author_name
Agatha Christie        [Paperback, Hardcover, Audio CD, , Mass Market...
Arthur Conan Doyle     [Mass Market Paperback, Hardcover, Audio CD, P...
Charles Dickens        [Mass Market Paperback, Hardcover, Paperback, ...
Edgar Allan Poe        [Paperback, Hardcover, Audio CD, , Mass Market...
George R.R. Martin     [Paperback, Mass Market Paperback, Hardcover, ...
James Patterson        [Paperback, Mass Market Paperback, Hardcover, ...
Jane Austen            [Paperback, Hardcover, , Mass Market Paperback...
Oscar Wilde            [Paperback, Hardcover, Mass Market Paperback, ...
Stephen King           [Mass Market Paperback, Paperback, Hardcover, ...
William Shakespeare    [Hardcover, Paperback, Unknown Binding, , Libr...
Name: format, dtype: object
In [ ]:
formats_count = unique_formats.apply(lambda x: len(x)) #getting the count of unique formats of each of the top 10 authors
In [ ]:
formats_count
Out[ ]:
author_name
Agatha Christie        31
Arthur Conan Doyle     28
Charles Dickens        27
Edgar Allan Poe        29
George R.R. Martin     21
James Patterson        17
Jane Austen            16
Oscar Wilde            17
Stephen King           24
William Shakespeare    15
Name: format, dtype: int64
In [ ]:
import matplotlib.pyplot as plt
plt.figure(figsize=(20, 6))
formats_count.plot(kind='bar')
plt.title('Distribution of Formats for Top 10 Authors')
plt.xlabel('Author Name')
plt.ylabel('Number of Unique Formats')
plt.show()

This plot shows the distribution of unique format counts for all the top 10 authors.

Provide information about the general response from readers (number of fans, average rating, number of reviews, etc.), divide the authors by gender, and comment about anything eventually related to “structural bias.” You may want to have a look at the following recommended readings:¶

You can even ask ChatGPT or any other LLM chatbot tool: try to formulate a prompt that provides helpful information about it. Put that information in your notebook and provide comments on what you found.

In [ ]:
summary_by_gender = top10authors.groupby('gender')[['fans_count', 'average_rating', 'text_reviews_count']].agg(['mean', 'std', 'min', 'max'])
In [ ]:
summary_by_gender
Out[ ]:
fans_count average_rating text_reviews_count
mean std min max mean std min max mean std min max
gender
female 47523.5 4338.100103 44456 50591 4.07000 0.084853 4.01 4.13 209991.00 38305.388550 182905 237077
male 163576.0 263563.002569 19044 766035 4.07625 0.165178 3.87 4.37 192184.25 193601.063698 38837 608956

Summary:

The table provides insights into the top 10 authors, specifically in terms of 'fans_count,' 'average_rating,' and 'text_reviews_count,' divided by gender (female and male). Here's a summary of the key statistics for each gender:

Female Authors:

The mean 'fans_count' for female authors is approximately 47523.5, with a standard deviation of 4338.10. The minimum 'fans_count' is 44,456, and the maximum is 50,591. The mean 'average_rating' for female authors is around 4.07, with a standard deviation of 0.08. The lowest average rating is 4.01, and the highest is 4.13. The mean 'text_reviews_count' for female authors is approximately 2,09,991.00, with a standard deviation of 38305.38. The lowest text reviews count is 182,905, and the highest is 237077.

Male Authors:

The mean 'fans_count' for male authors is about 163576.0, with a standard deviation of 263563.002. The minimum 'fans_count' is 19,044, and the maximum is 766035. The mean 'average_rating' for male authors is approximately 4.076, with a standard deviation of 0.165. The lowest average rating is 3.87, and the highest is 4.37. The mean 'text_reviews_count' for male authors is around 192184.25, with a standard deviation of 193601.06. The lowest text reviews count is 38837, and the highest is 608956.

I asked ChatGPT to implement a Visualisation for this summary statistics and here it goes:

In [ ]:
import seaborn as sns

# Sample data (replace with your actual data)
mean_data = {
    'gender': ['female', 'male'],
    'fans_count_mean': [47523.5, 163576.0],
    'average_rating_mean': [4.07000, 4.07625],
    'text_reviews_count_mean': [209991.00, 192184.25]
}

# Create a DataFrame from the sample data
mean_df = pd.DataFrame(mean_data)

# Set the style for Seaborn
sns.set(style="whitegrid")

# Create a figure with subplots
fig, axes = plt.subplots(1, 3, figsize=(20, 5))

# Bar chart for mean fans_count
sns.barplot(x="gender", y="fans_count_mean", data=mean_df, ax=axes[0])
axes[0].set(title="Mean Fans Count")

# Bar chart for mean average_rating
sns.barplot(x="gender", y="average_rating_mean", data=mean_df, ax=axes[1])
axes[1].set(title="Mean Average Rating")

# Bar chart for mean text_reviews_count
sns.barplot(x="gender", y="text_reviews_count_mean", data=mean_df, ax=axes[2])
axes[2].set(title="Mean Text Reviews Count")

# Add a common title for the subplots
plt.suptitle("Summary Statistics by Gender")

# Show the plots
plt.show()

# Create box plots to visualize data spread (you can adapt this)
# Example for 'fans_count'
plt.figure(figsize=(8, 3))
sns.boxplot(x='gender', y='fans_count', data=top10authors)
plt.title("Box Plot of Fans Count by Gender")
plt.show()

Conclusions

Fans Count:

Male authors, on average, have higher number of fans compared to female authors. However, there is significant variability within both groups, as indicated by the standard deviations. The minimum and maximum fans count for both male and female authors is substantial, indicating a wide range of popularity among the top 10 authors.

Average Rating:

Female authors, on average, have a slightly higher average rating compared to male authors. Both groups have relatively high average ratings. The standard deviations for average rating are relatively low, suggesting that most top 10 authors in both groups receive consistently high ratings.

Text Reviews Count:

Female authors have higher mean text reviews count compared to male authors. This indicates that books by female authors in the top 10 receive more text reviews, on average. The standard deviations for text reviews count are high, indicating variability in the number of reviews received by authors in both groups. Overall, it's essential to note that these conclusions are based on the top 10 authors in the dataset and may not be representative of all authors.

Both male and female authors in the top 10 are popular, with a significant number of fans. Female authors, on average, tend to have slightly higher average ratings and receive more text reviews. There is variability in the popularity, average ratings, and reviews count within both groups. However, it's important to consider that these insights are specific to the top 10 authors in the dataset and should not be generalized to all authors. Additional factors, such as the specific books or genres written by these authors, can influence these statistics.

RQ 6: Consider the top 10 authors concerning the number of fans again.¶

Provide the average time gap between two subsequent publications for a series of books and those not belonging to a series. What do you expect to see, and what is the actual answer to this question?¶

In [ ]:
top10onfansbasis= authors_clean.nlargest(10,'fans_count')
In [ ]:
popular_author_names = top10onfansbasis['name'].tolist()
In [ ]:
book_data_filtered = books2[books2['author_name'].isin(influential_author_names)]
In [ ]:
book_data_filtered.head(2)
Out[ ]:
author_id title num_pages language average_rating ratings_count text_reviews_count author_name original_publication_date publication_date format series_id series_name series_position
865 947 The Riverside Shakespeare 2057.0 eng 4.55 4270 202 William Shakespeare 1974-01-01 1997 Hardcover
867 947 The Norton Shakespeare 3420.0 4.57 1848 75 William Shakespeare 1972-01-01 1997 Hardcover
In [ ]:
# we are sorting the DataFrame by 'publication_date' within each series
book_data_filtered = book_data_filtered.sort_values(by=['series_name', 'original_publication_date'])

# and then calculating time gap between subsequent publications
book_data_filtered['time_gap'] = book_data_filtered.groupby('series_name')['original_publication_date'].diff()

# the average time gap for books belonging to a series
avg_time_gap_within_series = book_data_filtered[book_data_filtered['series_name']!='']['time_gap'].mean()

# Calculate the average time gap for books not belonging to a series
avg_time_gap_not_in_series = book_data_filtered[book_data_filtered['series_name']=='']['time_gap'].mean()
In [ ]:
print(f'Average time gap between two subsequent publications for a series of books is {avg_time_gap_within_series.days} days')
print(f'\nAverage time gap between two subsequent publications for books not belonging to a series is {avg_time_gap_not_in_series.days} days')
Average time gap between two subsequent publications for a series of books is 96 days

Average time gap between two subsequent publications for books not belonging to a series is 12 days

For each of the authors, give a convenient plot showing how many books has the given author published UP TO a given year. Are these authors contemporary with each other? Can you notice a range of years where their production rate was higher?¶

In [ ]:
# we get the publication year
book_data_filtered['publication_year'] = book_data_filtered['original_publication_date'].dt.year

# to count the cumulative number of books published after group by author and year
book_data_filtered['cumulative_books'] = book_data_filtered.groupby(['author_name', 'publication_year']).cumcount() + 1
In [ ]:
book_data_filtered[['author_name','publication_year','cumulative_books']]
Out[ ]:
author_name publication_year cumulative_books
2033820 William Shakespeare 1727 1
2132758 William Shakespeare 1727 2
3272287 William Shakespeare 1727 3
3566217 William Shakespeare 1727 4
4342353 William Shakespeare 1727 5
... ... ... ...
728567 Stephen King 2006 66
4772919 Stephen King 2006 67
728561 Stephen King 2006 68
4772937 Stephen King 2006 69
4772939 Stephen King 2006 70

16284 rows × 3 columns

In [ ]:
# Extract the year from the 'publication_date' and create a new column 'publication_year'
book_data_filtered['publication_year'] = book_data_filtered['original_publication_date'].dt.year

book_counts = book_data_filtered.groupby(['author_name', 'publication_year']).size().unstack(level=0, fill_value=0)
#the above line of code groups the data by author_name and publication_year unique combinations and then unstacks the resultant
# into separate columns of author_names and rows of publication_year. The author who has a book published in a given year will have a cell value 1, 2, 3...etc
# based on the number of books published by that author in that given year. I am using this unstack function of the pandas dataframe to store a df into
# the book_counts.
In [ ]:
book_counts.head(5)
Out[ ]:
author_name Agatha Christie Arthur Conan Doyle Charles Dickens Edgar Allan Poe George R.R. Martin James Patterson Jane Austen Oscar Wilde Stephen King William Shakespeare
publication_year
1727 0 0 0 0 0 0 0 0 0 5
1787 0 0 0 0 0 0 3 0 0 0
1790 0 0 0 0 0 0 1 0 0 0
1791 0 0 0 0 0 0 4 0 0 0
1792 0 0 0 0 0 0 2 0 0 0
In [ ]:
cumulative_counts = book_counts.cumsum()
In [ ]:
cumulative_counts.head(5)
Out[ ]:
author_name Agatha Christie Arthur Conan Doyle Charles Dickens Edgar Allan Poe George R.R. Martin James Patterson Jane Austen Oscar Wilde Stephen King William Shakespeare
publication_year
1727 0 0 0 0 0 0 0 0 0 5
1787 0 0 0 0 0 0 3 0 0 5
1790 0 0 0 0 0 0 4 0 0 5
1791 0 0 0 0 0 0 8 0 0 5
1792 0 0 0 0 0 0 10 0 0 5
In [ ]:
# then we plot the cumulative counts for each author
cumulative_counts.plot(figsize=(20,5))
plt.title('Cumulative Number of Books Published by Author per Year')
plt.xlabel('Year')
plt.ylabel('Cumulative Number of Books')
plt.legend(title='Author')
plt.grid()
years = cumulative_counts.index
year_step = 10
years_to_display = years[::year_step]
plt.xticks(years_to_display)
plt.show()

Comment:

Looking at the graph, we can infer that, not all of these top 10 popular authors are contemporary to each other. They were most productive in specific periods of time. For example, Charles Dickens was highly productive between 1832 and 1863. Edgar Allan Poe was also productive between 1832 and 1842. It implies that Charles Dickens and Edgar Allan Poe were contemporary to each other. Arthur Conan Doyle was productive from 1889 to 1919 and Oscar Wilde from 1880 to 1890 which implies they were contemporaries. Agatha Christie was productive between 1919 and 1969. Stephen King was productive from 1970 to 2000 and George RR Martin got productive between 1990 and 2009, both Stephen King and George RR Martin are contemporaries.

[RQ7] Estimating probabilities is a core skill for a data scientist: show us your best!¶

1. Estimate the probability that a book has over 30% of the ratings above 4.¶

In [ ]:
import json
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
In [ ]:
booko= pd.read_json("lighter_books.json", nrows=10, lines= True)
In [ ]:
booko['rating_dist']
Out[ ]:
0    5:1674064|4:664833|3:231195|2:41699|1:16215|to...
1    5:4801606|4:1681521|3:623286|2:145898|1:125040...
2    5:1690166|4:781011|3:313727|2:54687|1:15453|to...
3    5:1994597|4:696545|3:212678|2:28915|1:13959|to...
4    5:1808039|4:663849|3:193604|2:27759|1:12425|to...
5        5:25063|4:4467|3:1103|2:227|1:282|total:31142
6        5:49438|4:6112|3:1525|2:354|1:534|total:57963
7        5:25063|4:4467|3:1103|2:227|1:282|total:31142
8    5:753962|4:436665|3:206876|2:60681|1:32955|tot...
9    5:167705|4:81013|3:32283|2:8665|1:4360|total:2...
Name: rating_dist, dtype: object
In [ ]:
def createcounter(x):
    listo= x.split("|") # make a list of the individual ratings
    my_dict= {}
    for s in listo:
        key, value = s.split(':') #split each rating into key and value(was string before)
        my_dict[key] = int(value)# make a dictionnary out of it
    countocount= 0
    if my_dict['4']/ my_dict['total']> 0.3:
        countocount+=1 #The books that have achieved more than 30% ratings above 4 will get marked with a 1, the others with a 0
    elif my_dict['5']/ my_dict['total']> 0.3:
        countocount+=1
    return countocount
In [ ]:
chunksize = 10**5
sicount=0  #Variable to count the number of books with more than 30% ratings above 4
universe = 0 #Variable to count the number of rated books in total
for chunk in pd.read_json("lighter_books.json", chunksize=chunksize,lines=True ):
    chunk = chunk[chunk["ratings_count"] > 0 ]#Includes only the rows in chunk, that have ratings
    universe += len(chunk) #number of rows that the chunk contains
    chunk["siono"] = chunk.apply(lambda row: createcounter(row["rating_dist"]), axis=1) #Calls the function createcounter for every single row in the chunk and stores the value 1 or in a new column 'siono'
    sicount += len(chunk[chunk["siono"] == 1 ]) # number of rows in the chunk, with more than 30% ratings above 4

print(sicount/universe) #probability that a book has over 30% of the ratings above 4
0.845217970229105

The probability that a book has over 30% of the ratings above 4 is 0.845217970229105

Q2 Estimate the probability that an author publishes a new book within two years from its last work.¶

In [ ]:
#Estimate the probability that an author publishes a new book within two years from its last work.
# Assumptions:
#-If a book is published in a new format it is considered as new publication
#-Also a series of books is considered as new publication
In [ ]:
import json
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
from collections import defaultdict
from datetime import datetime
from statistics import mean
In [ ]:
booko2= pd.read_json("lighter_books.json", nrows=10, lines= True)
booko2
Out[ ]:
id title authors author_name author_id work_id isbn isbn13 asin language average_rating rating_dist ratings_count text_reviews_count publication_date original_publication_date format edition_information image_url publisher num_pages series_id series_name series_position shelves description
0 2 Harry Potter and the Order of the Phoenix (Har... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 2809203 0439358078 9780439358071 eng 4.50 5:1674064|4:664833|3:231195|2:41699|1:16215|to... 2628006 44716 2004-09 2003-06-21 Paperback US Edition https://i.gr-assets.com/images/S/compressed.ph... Scholastic Inc. 870 45175 Harry Potter 5 [{'name': 'to-read', 'count': 324191}, {'name'... There is a door at the end of a silent corrido...
1 3 Harry Potter and the Sorcerer's Stone (Harry P... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 4640799 eng 4.48 5:4801606|4:1681521|3:623286|2:145898|1:125040... 7377351 116930 2003-11-01 1997-06-26 Hardcover Library Edition https://i.gr-assets.com/images/S/compressed.ph... Scholastic Inc 309 45175 Harry Potter 1 [{'name': 'fantasy', 'count': 63540}, {'name':... Harry Potter's life is miserable. His parents ...
2 4 Harry Potter and the Chamber of Secrets (Harry... None J.K. Rowling 1077326 6231171 0439554896 9780439554893 eng 4.43 5:1690166|4:781011|3:313727|2:54687|1:15453|to... 2855044 55286 2003-11-01 1998-07-02 Hardcover https://i.gr-assets.com/images/S/compressed.ph... Scholastic 352 45175 Harry Potter 2 [{'name': 'to-read', 'count': 282341}, {'name'... The Dursleys were so mean and hideous that sum...
3 5 Harry Potter and the Prisoner of Azkaban (Harr... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 2402163 043965548X 9780439655484 eng 4.57 5:1994597|4:696545|3:212678|2:28915|1:13959|to... 2946694 58023 2004-05-01 1999-07-08 Mass Market Paperback https://i.gr-assets.com/images/S/compressed.ph... Scholastic Inc. 435 45175 Harry Potter 3 [{'name': 'to-read', 'count': 292815}, {'name'... For twelve long years, the dread fortress of A...
4 6 Harry Potter and the Goblet of Fire (Harry Pot... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 3046572 eng 4.56 5:1808039|4:663849|3:193604|2:27759|1:12425|to... 2705676 48637 2002-09-28 2000-07-08 Paperback First Scholastic Trade Paperback Edition https://i.gr-assets.com/images/S/compressed.ph... Scholastic 734 45175 Harry Potter 4 [{'name': 'to-read', 'count': 287086}, {'name'... Harry Potter is midway through his training as...
5 7 The Harry Potter Collection (Harry Potter, #1-6) [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 21457570 0439887453 9780439887458 eng 4.73 5:25063|4:4467|3:1103|2:227|1:282|total:31142 31142 975 2006-09-01 2005-01-01 Paperback Box Set https://i.gr-assets.com/images/S/compressed.ph... Scholastic 45175 Harry Potter 1-6 [{'name': 'to-read', 'count': 5809}, {'name': ... <div>Six years of magic, adventure, and myster...
6 8 Harry Potter Boxed Set, Books 1-5 (Harry Potte... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 21457576 0439682584 9780439682589 eng 4.79 5:49438|4:6112|3:1525|2:354|1:534|total:57963 57963 183 2004-09-13 2003-10-01 Paperback https://s.gr-assets.com/assets/nophoto/book/11... Scholastic 2690 [{'name': 'to-read', 'count': 7030}, {'name': ... Box Set containing Harry Potter and the Sorcer...
7 10 Harry Potter Collection (Harry Potter, #1-6) None J.K. Rowling 1077326 21457570 0439827604 9780439827607 eng 4.73 5:25063|4:4467|3:1103|2:227|1:282|total:31142 31142 975 2005-09-12 2005-01-01 Hardcover Box Set https://i.gr-assets.com/images/S/compressed.ph... Scholastic 3342 45175 Harry Potter 1-6 [{'name': 'to-read', 'count': 5809}, {'name': ... Six years of magic, adventure, and mystery mak...
8 11 The Hitchhiker's Guide to the Galaxy (Hitchhik... None Douglas Adams 4 3078186 eng 4.22 5:753962|4:436665|3:206876|2:60681|1:32955|tot... 1491139 31417 2005 1979-10-12 Mass Market Paperback Movie Tie-In Edition https://i.gr-assets.com/images/S/compressed.ph... Del Rey Books 216 40957 The Hitchhiker's Guide to the Galaxy 1 [{'name': 'to-read', 'count': 716080}, {'name'... Seconds before the Earth is demolished to make...
9 12 The Ultimate Hitchhiker's Guide: Five Complete... None Douglas Adams 4 135328 0517226952 9780517226957 eng 4.36 5:167705|4:81013|3:32283|2:8665|1:4360|total:2... 294026 5429 2005-11-01 1996-01-17 Leather Bound https://i.gr-assets.com/images/S/compressed.ph... Gramercy Books 815 40957 The Hitchhiker's Guide to the Galaxy 0.5-5 [{'name': 'to-read', 'count': 128191}, {'name'... At last in paperback in one complete volume, h...
In [ ]:
grouped = booko2.groupby('author_id')['original_publication_date']
grouped
author_dict = grouped.apply(list).to_dict()
author_dict
Out[ ]:
{4: ['1979-10-12', '1996-01-17'],
 1077326: ['2003-06-21',
  '1997-06-26',
  '1998-07-02',
  '1999-07-08',
  '2000-07-08',
  '2005-01-01',
  '2003-10-01',
  '2005-01-01']}
In [ ]:
chunksize= 10**4
chunks=[]
for chunk in pd.read_json("lighter_books.json", chunksize=chunksize, lines=True):
    chunks.append(chunk[['author_id', 'original_publication_date']])
df = pd.concat(chunks, axis=0)
grouped = df.groupby('author_id')['original_publication_date'] #selects all the books with the same author and stores the original publication dates in a list
author_dict = grouped.apply(list).to_dict() # make a dictionnary out of it
authorslonger2= 0 #Count for authors that had longer than 2 years on average to publish a new book
authorsfaster2=0 ##Count for authors that were faster than 2 years on average to publish a new book
for author_id, original_publication_date in author_dict.items():
    try:
        original_publication_date = sorted([datetime.strptime(date, '%Y-%m-%d') for date in original_publication_date if date is not None]) #convert them to datetime objects
    except ValueError:
        continue # If the convertion can't be done the author is skipped
    differences = [] #  Variable to calculate the difference between the the publications of an author
    differences_auth=[] # Variable to calculate the average calculation time of the authors
    for i in range(len(original_publication_date)-1):
        try:
            difference = original_publication_date[i+1] - original_publication_date[i]
            differences.append(difference.total_seconds()/(3600*24*360))
        except TypeError: # If the calculation can't be done the author is skipped
            continue
    if differences: # Handling the exception of an empty list
        average_difference = mean(differences)
        if average_difference >= 2:
            authorslonger2 += 1
        if average_difference <= 2:
            authorsfaster2 += 1
    else:
        continue
prob_faster2= authorsfaster2/(authorslonger2+authorsfaster2)
print(prob_faster2)
0.8973156401944895

The probability that an author publishes a new book within two years from its last work is 0.8973156401944895

Q3 In the file list.json, you will find a peculiar list named "The Worst Books of All Time." Estimate the probability of a book being included in this list, knowing it has more than 700 pages.¶

In [ ]:
import json
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
In [ ]:
booko2= pd.read_json("lighter_books.json", nrows=10, lines= True)
booko2
Out[ ]:
id title authors author_name author_id work_id isbn isbn13 asin language average_rating rating_dist ratings_count text_reviews_count publication_date original_publication_date format edition_information image_url publisher num_pages series_id series_name series_position shelves description
0 2 Harry Potter and the Order of the Phoenix (Har... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 2809203 0439358078 9780439358071 eng 4.50 5:1674064|4:664833|3:231195|2:41699|1:16215|to... 2628006 44716 2004-09 2003-06-21 Paperback US Edition https://i.gr-assets.com/images/S/compressed.ph... Scholastic Inc. 870 45175 Harry Potter 5 [{'name': 'to-read', 'count': 324191}, {'name'... There is a door at the end of a silent corrido...
1 3 Harry Potter and the Sorcerer's Stone (Harry P... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 4640799 eng 4.48 5:4801606|4:1681521|3:623286|2:145898|1:125040... 7377351 116930 2003-11-01 1997-06-26 Hardcover Library Edition https://i.gr-assets.com/images/S/compressed.ph... Scholastic Inc 309 45175 Harry Potter 1 [{'name': 'fantasy', 'count': 63540}, {'name':... Harry Potter's life is miserable. His parents ...
2 4 Harry Potter and the Chamber of Secrets (Harry... None J.K. Rowling 1077326 6231171 0439554896 9780439554893 eng 4.43 5:1690166|4:781011|3:313727|2:54687|1:15453|to... 2855044 55286 2003-11-01 1998-07-02 Hardcover https://i.gr-assets.com/images/S/compressed.ph... Scholastic 352 45175 Harry Potter 2 [{'name': 'to-read', 'count': 282341}, {'name'... The Dursleys were so mean and hideous that sum...
3 5 Harry Potter and the Prisoner of Azkaban (Harr... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 2402163 043965548X 9780439655484 eng 4.57 5:1994597|4:696545|3:212678|2:28915|1:13959|to... 2946694 58023 2004-05-01 1999-07-08 Mass Market Paperback https://i.gr-assets.com/images/S/compressed.ph... Scholastic Inc. 435 45175 Harry Potter 3 [{'name': 'to-read', 'count': 292815}, {'name'... For twelve long years, the dread fortress of A...
4 6 Harry Potter and the Goblet of Fire (Harry Pot... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 3046572 eng 4.56 5:1808039|4:663849|3:193604|2:27759|1:12425|to... 2705676 48637 2002-09-28 2000-07-08 Paperback First Scholastic Trade Paperback Edition https://i.gr-assets.com/images/S/compressed.ph... Scholastic 734 45175 Harry Potter 4 [{'name': 'to-read', 'count': 287086}, {'name'... Harry Potter is midway through his training as...
5 7 The Harry Potter Collection (Harry Potter, #1-6) [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 21457570 0439887453 9780439887458 eng 4.73 5:25063|4:4467|3:1103|2:227|1:282|total:31142 31142 975 2006-09-01 2005-01-01 Paperback Box Set https://i.gr-assets.com/images/S/compressed.ph... Scholastic 45175 Harry Potter 1-6 [{'name': 'to-read', 'count': 5809}, {'name': ... <div>Six years of magic, adventure, and myster...
6 8 Harry Potter Boxed Set, Books 1-5 (Harry Potte... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 21457576 0439682584 9780439682589 eng 4.79 5:49438|4:6112|3:1525|2:354|1:534|total:57963 57963 183 2004-09-13 2003-10-01 Paperback https://s.gr-assets.com/assets/nophoto/book/11... Scholastic 2690 [{'name': 'to-read', 'count': 7030}, {'name': ... Box Set containing Harry Potter and the Sorcer...
7 10 Harry Potter Collection (Harry Potter, #1-6) None J.K. Rowling 1077326 21457570 0439827604 9780439827607 eng 4.73 5:25063|4:4467|3:1103|2:227|1:282|total:31142 31142 975 2005-09-12 2005-01-01 Hardcover Box Set https://i.gr-assets.com/images/S/compressed.ph... Scholastic 3342 45175 Harry Potter 1-6 [{'name': 'to-read', 'count': 5809}, {'name': ... Six years of magic, adventure, and mystery mak...
8 11 The Hitchhiker's Guide to the Galaxy (Hitchhik... None Douglas Adams 4 3078186 eng 4.22 5:753962|4:436665|3:206876|2:60681|1:32955|tot... 1491139 31417 2005 1979-10-12 Mass Market Paperback Movie Tie-In Edition https://i.gr-assets.com/images/S/compressed.ph... Del Rey Books 216 40957 The Hitchhiker's Guide to the Galaxy 1 [{'name': 'to-read', 'count': 716080}, {'name'... Seconds before the Earth is demolished to make...
9 12 The Ultimate Hitchhiker's Guide: Five Complete... None Douglas Adams 4 135328 0517226952 9780517226957 eng 4.36 5:167705|4:81013|3:32283|2:8665|1:4360|total:2... 294026 5429 2005-11-01 1996-01-17 Leather Bound https://i.gr-assets.com/images/S/compressed.ph... Gramercy Books 815 40957 The Hitchhiker's Guide to the Galaxy 0.5-5 [{'name': 'to-read', 'count': 128191}, {'name'... At last in paperback in one complete volume, h...
In [ ]:
booko3=pd.read_json("list.json", nrows=10, lines=True)
booko3
Out[ ]:
id title description description_html num_pages num_books num_voters created_date tags num_likes created_by num_comments books
0 2 The Worst Books of All Time What do you think are the worst books ever wri... \n What do you think are the worst books ... 74 7395 18260 May 20th, 2008 [abominable, abomination, awful, bad, disgusti... 175 {'name': 'Michael Economy', 'id': '73'} 2570 [{'book_id': '41865', 'title': 'Twilight', 'au...
1 3 Best Science Fiction & Fantasy Books Anything in the science fiction or fantasy gen... \n Anything in the science fiction or fan... 71 7023 21747 May 29th, 2008 [best-fantasy, best-science-fiction, earliest-... 2989 {'name': 'deleted user', 'id': ''} 307 [{'book_id': '375802', 'title': 'Ender's Game'...
2 4 Best Books of 2008 The best books first published during 2008.See... \n The best books first published during ... 17 1678 6939 May 29th, 2008 [2008, best, by-year, earliest-list, fiction, ... 59 {'name': 'deleted user', 'id': ''} 181 [{'book_id': '2767052', 'title': 'The Hunger G...
3 5 Best Books of the Decade: 2000s The best books published during the 2000s deca... \n The best books published during the 20... 70 6919 28249 May 29th, 2008 [2000, 2001, 2002, 2003, 2004, 2005, 2006, 200... 1192 {'name': 'deleted user', 'id': ''} 163 [{'book_id': '136251', 'title': 'Harry Potter ...
4 6 Best Books of the 20th Century The best books published during the 20th centu... \n The best books published during the 20... 76 7600 49437 May 29th, 2008 [20th, 20th-century, best, by-century, by-year... 6083 {'name': 'deleted user', 'id': ''} 510 [{'book_id': '2657', 'title': 'To Kill a Mocki...
5 7 Best Books of the 21st Century The best books published during the 21st centu... \n The best books published during the 21... 91 9032 21393 May 29th, 2008 [2001, 2002, 2003, 2004, 2005, 2006, 2007, 200... 2024 {'name': 'deleted user', 'id': ''} 280 [{'book_id': '136251', 'title': 'Harry Potter ...
6 8 Thickest Books Ever Original novel, not omnibus editions.500 pages... \n Original novel, not omnibus editions.<... 9 862 2602 June 4th, 2008 [500-pages, 500-pages-plus, big-books, earlies... 118 {'name': 'Michael Economy', 'id': '73'} 104 [{'book_id': '6', 'title': 'Harry Potter and t...
7 9 Best Books of the Decade: 1980s The best books published during the 1980s deca... \n The best books published during the 19... 21 2059 2323 June 6th, 2008 [1980, 1980s, 1981, 1982, 1983, 1984, 1985, 19... 240 {'name': 'deleted user', 'id': ''} 41 [{'book_id': '38447', 'title': 'The Handmaid's...
8 10 Best books for an African Safari Best books to read on an African Safari. Books... \n Best books to read on an African Safar... 5 445 705 June 9th, 2008 [africa, african, earliest-list, location, saf... 103 {'name': 'deleted user', 'id': ''} 9 [{'book_id': '7244', 'title': 'The Poisonwood ...
9 11 Best Crime & Mystery Books The best of crime and mystery books.If the boo... \n The best of crime and mystery books.<b... 62 6112 14241 June 10th, 2008 [best, crime, crime-mystery, mystery] 1827 {'name': 'deleted user', 'id': ''} 138 [{'book_id': '2429135', 'title': 'The Girl wit...
In [ ]:
value2 = booko3.loc[0, 'books']
value2
Out[ ]:
[{'book_id': '41865',
  'title': 'Twilight',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 1, 'score': 527144, 'votes': 5303}},
 {'book_id': '1162543',
  'title': 'Breaking Dawn',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 2, 'score': 400813, 'votes': 4061}},
 {'book_id': '49041',
  'title': 'New Moon',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 3, 'score': 356742, 'votes': 3648}},
 {'book_id': '428263',
  'title': 'Eclipse',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 4, 'score': 323657, 'votes': 3338}},
 {'book_id': '10818853',
  'title': 'Fifty Shades of Grey',
  'author_id': '4725841',
  'author': 'E.L. James',
  'position': {'ranking': 5, 'score': 231106, 'votes': 2356}},
 {'book_id': '6263078',
  'title': 'Miles to Go',
  'author_id': '990148',
  'author': 'Miley Cyrus',
  'position': {'ranking': 6, 'score': 175882, 'votes': 1799}},
 {'book_id': '6076107',
  'title': 'Guilty: Liberal "Victims" and Their Assault on America',
  'author_id': '2761',
  'author': 'Ann Coulter',
  'position': {'ranking': 7, 'score': 110457, 'votes': 1145}},
 {'book_id': '3090465',
  'title': 'The Twilight Saga',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 8, 'score': 92499, 'votes': 973}},
 {'book_id': '564449',
  'title': 'Scientology: The Fundamentals of Thought',
  'author_id': '33503',
  'author': 'L. Ron Hubbard',
  'position': {'ranking': 9, 'score': 90584, 'votes': 947}},
 {'book_id': '968',
  'title': 'The Da Vinci Code',
  'author_id': '630',
  'author': 'Dan Brown',
  'position': {'ranking': 10, 'score': 85252, 'votes': 875}},
 {'book_id': '4013201',
  'title': 'Hannah Montana and Miley Cyrus: Best of Both Worlds Concert',
  'author_id': '990148',
  'author': 'Miley Cyrus',
  'position': {'ranking': 11, 'score': 77032, 'votes': 809}},
 {'book_id': '1812457',
  'title': 'The Shack',
  'author_id': '15481463',
  'author': 'William Paul Young',
  'position': {'ranking': 12, 'score': 75936, 'votes': 774}},
 {'book_id': '747061',
  'title': 'Book of Mormon, Doctrine and Covenants, Pearl of Great Price',
  'author_id': '1367163',
  'author': 'The Church of Jesus Christ of Latter-day Saints',
  'position': {'ranking': 13, 'score': 66279, 'votes': 698}},
 {'book_id': '2183067',
  'title': 'Hannah Montana 2/Meet Miley Cyrus',
  'author_id': '990148',
  'author': 'Miley Cyrus',
  'position': {'ranking': 14, 'score': 60722, 'votes': 651}},
 {'book_id': '48625',
  'title': 'The No Spin Zone: Confrontations with the Powerful and Famous in America',
  'author_id': '27281',
  'author': "Bill O'Reilly",
  'position': {'ranking': 15, 'score': 57981, 'votes': 615}},
 {'book_id': '993455',
  'title': "An Inconvenient Book: Real Solutions to the World's Biggest Problems",
  'author_id': '188932',
  'author': 'Glenn Beck',
  'position': {'ranking': 16, 'score': 57043, 'votes': 610}},
 {'book_id': '569357',
  'title': 'Let Freedom Ring: Winning the War of Liberty over Liberalism',
  'author_id': '140720',
  'author': 'Sean Hannity',
  'position': {'ranking': 17, 'score': 53321, 'votes': 575}},
 {'book_id': '3975774',
  'title': 'Evermore',
  'author_id': '200317',
  'author': 'Alyson Noel',
  'position': {'ranking': 18, 'score': 53284, 'votes': 554}},
 {'book_id': '19501',
  'title': 'Eat, Pray, Love',
  'author_id': '11679',
  'author': 'Elizabeth Gilbert',
  'position': {'ranking': 19, 'score': 52598, 'votes': 549}},
 {'book_id': '7937462',
  'title': 'The Short Second Life of Bree Tanner',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 20, 'score': 51003, 'votes': 550}},
 {'book_id': '9742',
  'title': 'The Audacity of Hope: Thoughts on Reclaiming the American Dream',
  'author_id': '6356',
  'author': 'Barack Obama',
  'position': {'ranking': 21, 'score': 50947, 'votes': 530}},
 {'book_id': '7455',
  'title': 'Sex and the City',
  'author_id': '4415',
  'author': 'Candace Bushnell',
  'position': {'ranking': 22, 'score': 48558, 'votes': 516}},
 {'book_id': '5107',
  'title': 'The Catcher in the Rye',
  'author_id': '819789',
  'author': 'J.D. Salinger',
  'position': {'ranking': 23, 'score': 48407, 'votes': 501}},
 {'book_id': '240469',
  'title': 'Deliver Us from Evil: Defeating Terrorism, Despotism, and Liberalism',
  'author_id': '140720',
  'author': 'Sean Hannity',
  'position': {'ranking': 24, 'score': 47115, 'votes': 515}},
 {'book_id': '119322',
  'title': 'The Golden Compass',
  'author_id': '3618',
  'author': 'Philip Pullman',
  'position': {'ranking': 25, 'score': 46347, 'votes': 481}},
 {'book_id': '8714',
  'title': 'An Inconvenient Truth: The Planetary Emergency of Global Warming and What We Can Do About It',
  'author_id': '5658',
  'author': 'Al Gore',
  'position': {'ranking': 26, 'score': 40940, 'votes': 426}},
 {'book_id': '8752457',
  'title': 'First Step 2 Forever',
  'author_id': '4019884',
  'author': 'Justin Bieber',
  'position': {'ranking': 27, 'score': 40534, 'votes': 432}},
 {'book_id': '11857408',
  'title': 'Fifty Shades Darker',
  'author_id': '4725841',
  'author': 'E.L. James',
  'position': {'ranking': 28, 'score': 40421, 'votes': 431}},
 {'book_id': '675626',
  'title': 'Scientology 8-8008: How to Increase Your Spirituality Ability from Zero to Infinity',
  'author_id': '33503',
  'author': 'L. Ron Hubbard',
  'position': {'ranking': 29, 'score': 36435, 'votes': 403}},
 {'book_id': '6411961',
  'title': 'The Lost Symbol',
  'author_id': '630',
  'author': 'Dan Brown',
  'position': {'ranking': 30, 'score': 35350, 'votes': 369}},
 {'book_id': '7613',
  'title': 'Animal Farm',
  'author_id': '3706',
  'author': 'George Orwell',
  'position': {'ranking': 31, 'score': 33440, 'votes': 347}},
 {'book_id': '8135213',
  'title': 'Justin Bieber: His World',
  'author_id': '2992196',
  'author': 'Riley Brooks',
  'position': {'ranking': 32, 'score': 32972, 'votes': 358}},
 {'book_id': '9416',
  'title': 'Confessions of a Shopaholic',
  'author_id': '6160',
  'author': 'Sophie Kinsella',
  'position': {'ranking': 33, 'score': 32962, 'votes': 350}},
 {'book_id': '3268926',
  'title': 'The Christmas Sweater',
  'author_id': '188932',
  'author': 'Glenn Beck',
  'position': {'ranking': 34, 'score': 31261, 'votes': 347}},
 {'book_id': '96833',
  'title': 'I Want to Tell You: My Response to Your Letters, Your Messages, Your Questions',
  'author_id': '1744933',
  'author': 'O.J. Simpson',
  'position': {'ranking': 35, 'score': 31194, 'votes': 344}},
 {'book_id': '252914',
  'title': "The O'Reilly Factor: The Good, the Bad, and the Completely Ridiculous in American Life",
  'author_id': '27281',
  'author': "Bill O'Reilly",
  'position': {'ranking': 36, 'score': 30375, 'votes': 347}},
 {'book_id': '13536860',
  'title': 'Fifty Shades Freed',
  'author_id': '4725841',
  'author': 'E.L. James',
  'position': {'ranking': 37, 'score': 29101, 'votes': 315}},
 {'book_id': '35220',
  'title': 'The Red Badge of Courage',
  'author_id': '19879',
  'author': 'Stephen Crane',
  'position': {'ranking': 38, 'score': 29091, 'votes': 304}},
 {'book_id': '6867',
  'title': 'Atonement',
  'author_id': '2408',
  'author': 'Ian McEwan',
  'position': {'ranking': 39, 'score': 28939, 'votes': 302}},
 {'book_id': '56495',
  'title': 'The Purpose Driven Life: What on Earth Am I Here for?',
  'author_id': '711',
  'author': 'Rick Warren',
  'position': {'ranking': 40, 'score': 28210, 'votes': 305}},
 {'book_id': '3636',
  'title': 'The Giver',
  'author_id': '2493',
  'author': 'Lois Lowry',
  'position': {'ranking': 41, 'score': 28008, 'votes': 294}},
 {'book_id': '2657',
  'title': 'To Kill a Mockingbird',
  'author_id': '1825',
  'author': 'Harper Lee',
  'position': {'ranking': 42, 'score': 27173, 'votes': 288}},
 {'book_id': '703847',
  'title': 'Introduction to Scientology Ethics',
  'author_id': '33503',
  'author': 'L. Ron Hubbard',
  'position': {'ranking': 43, 'score': 26907, 'votes': 308}},
 {'book_id': '252917',
  'title': "Who's Looking Out for You?",
  'author_id': '27281',
  'author': "Bill O'Reilly",
  'position': {'ranking': 44, 'score': 26719, 'votes': 304}},
 {'book_id': '6487308',
  'title': 'Fallen',
  'author_id': '2905297',
  'author': 'Lauren Kate',
  'position': {'ranking': 45, 'score': 26398, 'votes': 277}},
 {'book_id': '13079982',
  'title': 'Fahrenheit 451',
  'author_id': '1630',
  'author': 'Ray Bradbury',
  'position': {'ranking': 46, 'score': 26072, 'votes': 274}},
 {'book_id': '7624',
  'title': 'Lord of the Flies',
  'author_id': '306',
  'author': 'William Golding',
  'position': {'ranking': 47, 'score': 25542, 'votes': 265}},
 {'book_id': '4900',
  'title': 'Heart of Darkness',
  'author_id': '3345',
  'author': 'Joseph Conrad',
  'position': {'ranking': 48, 'score': 25394, 'votes': 266}},
 {'book_id': '1656001',
  'title': 'The Host',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 49, 'score': 25075, 'votes': 271}},
 {'book_id': '10920',
  'title': 'Cold Mountain',
  'author_id': '7130',
  'author': 'Charles Frazier',
  'position': {'ranking': 50, 'score': 24282, 'votes': 255}},
 {'book_id': '32261',
  'title': "Tess of the D'Urbervilles",
  'author_id': '15905',
  'author': 'Thomas Hardy',
  'position': {'ranking': 51, 'score': 24229, 'votes': 256}},
 {'book_id': '6478256',
  'title': "Glenn Beck's Common Sense: The Case Against an Out-of-Control Government, Inspired by Thomas Paine",
  'author_id': '188932',
  'author': 'Glenn Beck',
  'position': {'ranking': 52, 'score': 23957, 'votes': 275}},
 {'book_id': '70401',
  'title': 'On the Road',
  'author_id': '1742',
  'author': 'Jack Kerouac',
  'position': {'ranking': 53, 'score': 22601, 'votes': 238}},
 {'book_id': '801178',
  'title': 'Chicken Soup for the Soul',
  'author_id': '35476',
  'author': 'Jack Canfield',
  'position': {'ranking': 54, 'score': 22030, 'votes': 243}},
 {'book_id': '139253',
  'title': 'The House on Mango Street',
  'author_id': '13234',
  'author': 'Sandra Cisneros',
  'position': {'ranking': 55, 'score': 21772, 'votes': 233}},
 {'book_id': '43763',
  'title': 'Interview with the Vampire',
  'author_id': '7577',
  'author': 'Anne Rice',
  'position': {'ranking': 56, 'score': 21722, 'votes': 233}},
 {'book_id': '662',
  'title': 'Atlas Shrugged',
  'author_id': '432',
  'author': 'Ayn Rand',
  'position': {'ranking': 57, 'score': 21132, 'votes': 229}},
 {'book_id': '5308',
  'title': 'The Pearl',
  'author_id': '585',
  'author': 'John Steinbeck',
  'position': {'ranking': 58, 'score': 20788, 'votes': 223}},
 {'book_id': '18144590',
  'title': 'The Alchemist',
  'author_id': '566',
  'author': 'Paulo Coelho',
  'position': {'ranking': 59, 'score': 20680, 'votes': 217}},
 {'book_id': '227443',
  'title': "Bridget Jones's Diary",
  'author_id': '3090',
  'author': 'Helen Fielding',
  'position': {'ranking': 60, 'score': 20676, 'votes': 226}},
 {'book_id': '37781',
  'title': 'Things Fall Apart',
  'author_id': '8051',
  'author': 'Chinua Achebe',
  'position': {'ranking': 61, 'score': 20640, 'votes': 219}},
 {'book_id': '629',
  'title': 'Zen and the Art of Motorcycle Maintenance: An Inquiry Into Values',
  'author_id': '401',
  'author': 'Robert M. Pirsig',
  'position': {'ranking': 62, 'score': 20357, 'votes': 217}},
 {'book_id': '81176',
  'title': "Dude, Where's My Country?",
  'author_id': '3154596',
  'author': 'Michael Moore',
  'position': {'ranking': 63, 'score': 20021, 'votes': 220}},
 {'book_id': '37442',
  'title': 'Wicked: The Life and Times of the Wicked Witch of the West',
  'author_id': '7025',
  'author': 'Gregory Maguire',
  'position': {'ranking': 64, 'score': 19244, 'votes': 203}},
 {'book_id': '227603',
  'title': 'Prozac Nation',
  'author_id': '4370',
  'author': 'Elizabeth Wurtzel',
  'position': {'ranking': 65, 'score': 18085, 'votes': 194}},
 {'book_id': '30183',
  'title': 'Marked',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 66, 'score': 17671, 'votes': 189}},
 {'book_id': '33926',
  'title': "The Girls' Guide to Hunting and Fishing",
  'author_id': '7375',
  'author': 'Melissa Bank',
  'position': {'ranking': 67, 'score': 17411, 'votes': 189}},
 {'book_id': '186190',
  'title': 'Forrest Gump',
  'author_id': '77004',
  'author': 'Winston Groom',
  'position': {'ranking': 68, 'score': 16868, 'votes': 181}},
 {'book_id': '7604',
  'title': 'Lolita',
  'author_id': '5152',
  'author': 'Vladimir Nabokov',
  'position': {'ranking': 69, 'score': 16524, 'votes': 181}},
 {'book_id': '667',
  'title': 'Anthem',
  'author_id': '432',
  'author': 'Ayn Rand',
  'position': {'ranking': 70, 'score': 16511, 'votes': 187}},
 {'book_id': '7354',
  'title': 'The Shipping News',
  'author_id': '1262010',
  'author': 'Annie Proulx',
  'position': {'ranking': 71, 'score': 16497, 'votes': 178}},
 {'book_id': '3754102',
  'title': 'The Obama Nation',
  'author_id': '63638',
  'author': 'Jerome R. Corsi',
  'position': {'ranking': 72, 'score': 16421, 'votes': 186}},
 {'book_id': '4989',
  'title': 'The Red Tent',
  'author_id': '626222',
  'author': 'Anita Diamant',
  'position': {'ranking': 73, 'score': 15857, 'votes': 171}},
 {'book_id': '234225',
  'title': 'Dune',
  'author_id': '58',
  'author': 'Frank Herbert',
  'position': {'ranking': 74, 'score': 15843, 'votes': 173}},
 {'book_id': '3332986',
  'title': 'Hannah Montana: Recorder Fun! Pack',
  'author_id': '990148',
  'author': 'Miley Cyrus',
  'position': {'ranking': 75, 'score': 15713, 'votes': 179}},
 {'book_id': '168668',
  'title': 'Catch-22',
  'author_id': '3167',
  'author': 'Joseph Heller',
  'position': {'ranking': 76, 'score': 15624, 'votes': 166}},
 {'book_id': '5470',
  'title': '1984',
  'author_id': '3706',
  'author': 'George Orwell',
  'position': {'ranking': 77, 'score': 15583, 'votes': 166}},
 {'book_id': '5191',
  'title': "The Pilot's Wife",
  'author_id': '3530',
  'author': 'Anita Shreve',
  'position': {'ranking': 78, 'score': 15280, 'votes': 163}},
 {'book_id': '10210',
  'title': 'Jane Eyre',
  'author_id': '1036615',
  'author': 'Charlotte Brontë',
  'position': {'ranking': 79, 'score': 15218, 'votes': 165}},
 {'book_id': '11125',
  'title': 'Digital Fortress',
  'author_id': '630',
  'author': 'Dan Brown',
  'position': {'ranking': 80, 'score': 15036, 'votes': 164}},
 {'book_id': '6538',
  'title': 'Portrait of a Killer: Jack the Ripper - Case Closed',
  'author_id': '1025097',
  'author': 'Patricia Cornwell',
  'position': {'ranking': 81, 'score': 14890, 'votes': 164}},
 {'book_id': '930',
  'title': 'Memoirs of a Geisha',
  'author_id': '614',
  'author': 'Arthur Golden',
  'position': {'ranking': 82, 'score': 14787, 'votes': 162}},
 {'book_id': '95707',
  'title': 'Your Best Life Now: 7 Steps to Living at Your Full Potential',
  'author_id': '55044',
  'author': 'Joel Osteen',
  'position': {'ranking': 83, 'score': 14740, 'votes': 176}},
 {'book_id': '5641414',
  'title': 'Liberty and Tyranny: A Conservative Manifesto',
  'author_id': '311467',
  'author': 'Mark R. Levin',
  'position': {'ranking': 84, 'score': 14685, 'votes': 176}},
 {'book_id': '78411',
  'title': 'The Bad Beginning',
  'author_id': '36746',
  'author': 'Lemony Snicket',
  'position': {'ranking': 85, 'score': 14414, 'votes': 154}},
 {'book_id': '5899779',
  'title': 'Pride and Prejudice and Zombies',
  'author_id': '169377',
  'author': 'Seth Grahame-Smith',
  'position': {'ranking': 86, 'score': 14322, 'votes': 155}},
 {'book_id': '256683',
  'title': 'City of Bones',
  'author_id': '150038',
  'author': 'Cassandra Clare',
  'position': {'ranking': 87, 'score': 13827, 'votes': 148}},
 {'book_id': '33574273',
  'title': 'A Wrinkle in Time',
  'author_id': '106',
  'author': "Madeleine L'Engle",
  'position': {'ranking': 88, 'score': 13450, 'votes': 146}},
 {'book_id': '52529',
  'title': 'The Secret',
  'author_id': '29655',
  'author': 'Rhonda Byrne',
  'position': {'ranking': 89, 'score': 13404, 'votes': 146}},
 {'book_id': '338798',
  'title': 'Ulysses',
  'author_id': '5144',
  'author': 'James Joyce',
  'position': {'ranking': 90, 'score': 13015, 'votes': 141}},
 {'book_id': '73968',
  'title': 'Love Story',
  'author_id': '15516',
  'author': 'Erich Segal',
  'position': {'ranking': 91, 'score': 12855, 'votes': 145}},
 {'book_id': '2956',
  'title': 'The Adventures of Huckleberry Finn',
  'author_id': '1244',
  'author': 'Mark Twain',
  'position': {'ranking': 92, 'score': 12726, 'votes': 141}},
 {'book_id': '359770',
  'title': 'House of Sand and Fog',
  'author_id': '9785',
  'author': 'Andre Dubus III',
  'position': {'ranking': 93, 'score': 12604, 'votes': 137}},
 {'book_id': '5129',
  'title': 'Brave New World',
  'author_id': '3487',
  'author': 'Aldous Huxley',
  'position': {'ranking': 94, 'score': 12465, 'votes': 134}},
 {'book_id': '1035',
  'title': 'Trump: How to Get Rich',
  'author_id': '676',
  'author': 'Donald J. Trump',
  'position': {'ranking': 95, 'score': 12360, 'votes': 153}},
 {'book_id': '228333',
  'title': 'The Nanny Diaries',
  'author_id': '9222',
  'author': 'Emma McLaughlin',
  'position': {'ranking': 96, 'score': 12337, 'votes': 138}},
 {'book_id': '12232938',
  'title': 'The Lovely Bones',
  'author_id': '316',
  'author': 'Alice Sebold',
  'position': {'ranking': 97, 'score': 12037, 'votes': 129}},
 {'book_id': '1934',
  'title': 'Little Women',
  'author_id': '1315',
  'author': 'Louisa May Alcott',
  'position': {'ranking': 98, 'score': 11943, 'votes': 132}},
 {'book_id': '7672',
  'title': 'Congo',
  'author_id': '5194',
  'author': 'Michael Crichton',
  'position': {'ranking': 99, 'score': 11888, 'votes': 131}},
 {'book_id': '36072',
  'title': 'The 7 Habits of Highly Effective People: Powerful Lessons in Personal Change',
  'author_id': '1538',
  'author': 'Stephen R. Covey',
  'position': {'ranking': 100, 'score': 11821, 'votes': 136}},
 {'book_id': '6339664',
  'title': 'Hush, Hush',
  'author_id': '2876763',
  'author': 'Becca Fitzpatrick',
  'position': {'ranking': 101, 'score': 11705, 'votes': 125}},
 {'book_id': '350',
  'title': 'Stranger in a Strange Land',
  'author_id': '205',
  'author': 'Robert A. Heinlein',
  'position': {'ranking': 102, 'score': 11599, 'votes': 129}},
 {'book_id': '32418',
  'title': 'Hannibal',
  'author_id': '12455',
  'author': 'Thomas  Harris',
  'position': {'ranking': 103, 'score': 11470, 'votes': 128}},
 {'book_id': '18431',
  'title': 'The Rule of Four',
  'author_id': '11111',
  'author': 'Ian Caldwell',
  'position': {'ranking': 104, 'score': 11465, 'votes': 125}},
 {'book_id': '4671',
  'title': 'The Great Gatsby',
  'author_id': '3190',
  'author': 'F. Scott Fitzgerald',
  'position': {'ranking': 105, 'score': 11321, 'votes': 122}},
 {'book_id': '2102101',
  'title': 'Scientology 8-80: The Discovery and Increase of Life Energy',
  'author_id': '33503',
  'author': 'L. Ron Hubbard',
  'position': {'ranking': 106, 'score': 10793, 'votes': 131}},
 {'book_id': '43889',
  'title': "Wizard's First Rule",
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 107, 'score': 10545, 'votes': 115}},
 {'book_id': '7260188',
  'title': 'Mockingjay',
  'author_id': '153394',
  'author': 'Suzanne Collins',
  'position': {'ranking': 108, 'score': 10510, 'votes': 113}},
 {'book_id': '375802',
  'title': "Ender's Game",
  'author_id': '589',
  'author': 'Orson Scott Card',
  'position': {'ranking': 109, 'score': 10327, 'votes': 114}},
 {'book_id': '15613',
  'title': 'Billy Budd, Sailor',
  'author_id': '1624',
  'author': 'Herman Melville',
  'position': {'ranking': 110, 'score': 10271, 'votes': 112}},
 {'book_id': '233818',
  'title': 'Island of the Blue Dolphins',
  'author_id': '4999',
  'author': "Scott O'Dell",
  'position': {'ranking': 111, 'score': 10251, 'votes': 110}},
 {'book_id': '976',
  'title': 'Deception Point',
  'author_id': '630',
  'author': 'Dan Brown',
  'position': {'ranking': 112, 'score': 10177, 'votes': 116}},
 {'book_id': '7588',
  'title': 'A Portrait of the Artist as a Young Man',
  'author_id': '5144',
  'author': 'James Joyce',
  'position': {'ranking': 113, 'score': 10158, 'votes': 111}},
 {'book_id': '580022',
  'title': 'What Is Scientology?',
  'author_id': '33503',
  'author': 'L. Ron Hubbard',
  'position': {'ranking': 114, 'score': 10111, 'votes': 125}},
 {'book_id': '6185',
  'title': 'Wuthering Heights',
  'author_id': '4191',
  'author': 'Emily Brontë',
  'position': {'ranking': 115, 'score': 10038, 'votes': 107}},
 {'book_id': '329084',
  'title': 'The Real America: Messages from the Heart and Heartland',
  'author_id': '188932',
  'author': 'Glenn Beck',
  'position': {'ranking': 116, 'score': 9774, 'votes': 120}},
 {'book_id': '10975',
  'title': 'The Sound and the Fury',
  'author_id': '3535',
  'author': 'William Faulkner',
  'position': {'ranking': 117, 'score': 9424, 'votes': 103}},
 {'book_id': '2183068',
  'title': 'Hannah Montana: Pro Vocal Series Volume 20',
  'author_id': '990148',
  'author': 'Miley Cyrus',
  'position': {'ranking': 118, 'score': 9382, 'votes': 111}},
 {'book_id': '6644',
  'title': 'Le Divorce',
  'author_id': '2665',
  'author': 'Diane Johnson',
  'position': {'ranking': 119, 'score': 9314, 'votes': 107}},
 {'book_id': '521542',
  'title': 'The Bible Code',
  'author_id': '25216',
  'author': 'Michael Drosnin',
  'position': {'ranking': 120, 'score': 8993, 'votes': 109}},
 {'book_id': '2429135',
  'title': 'The Girl with the Dragon Tattoo',
  'author_id': '706255',
  'author': 'Stieg Larsson',
  'position': {'ranking': 121, 'score': 8880, 'votes': 95}},
 {'book_id': '7317503',
  'title': 'Edward Or Jacob? Quick Quizzes For Fans Of The Twilight Saga',
  'author_id': '2992196',
  'author': 'Riley Brooks',
  'position': {'ranking': 122, 'score': 8728, 'votes': 104}},
 {'book_id': '5043',
  'title': 'The Pillars of the Earth',
  'author_id': '3447',
  'author': 'Ken Follett',
  'position': {'ranking': 123, 'score': 8659, 'votes': 96}},
 {'book_id': '58345',
  'title': 'The Awakening',
  'author_id': '5132',
  'author': 'Kate Chopin',
  'position': {'ranking': 124, 'score': 8470, 'votes': 95}},
 {'book_id': '3805',
  'title': 'The Corrections',
  'author_id': '2578',
  'author': 'Jonathan Franzen',
  'position': {'ranking': 125, 'score': 8445, 'votes': 95}},
 {'book_id': '37435',
  'title': 'The Secret Life of Bees',
  'author_id': '4711',
  'author': 'Sue Monk Kidd',
  'position': {'ranking': 126, 'score': 8443, 'votes': 97}},
 {'book_id': '676924',
  'title': 'Betrayed',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 127, 'score': 8307, 'votes': 92}},
 {'book_id': '113436',
  'title': 'Eragon',
  'author_id': '8349',
  'author': 'Christopher Paolini',
  'position': {'ranking': 128, 'score': 8291, 'votes': 90}},
 {'book_id': '2942053',
  'title': 'MILEY CYRUS: This Is Her Life',
  'author_id': '1179343',
  'author': 'Brittany Kent',
  'position': {'ranking': 129, 'score': 8231, 'votes': 97}},
 {'book_id': '418517',
  'title': 'All the Rules: Time-Tested Secrets for Capturing the Heart of Mr. Right',
  'author_id': '130168',
  'author': 'Ellen Fein',
  'position': {'ranking': 130, 'score': 8163, 'votes': 99}},
 {'book_id': '41817486',
  'title': 'A Clockwork Orange',
  'author_id': '5735',
  'author': 'Anthony Burgess',
  'position': {'ranking': 131, 'score': 8078, 'votes': 90}},
 {'book_id': '1870244',
  'title': 'Think BIG and Kick Ass in Business and Life',
  'author_id': '676',
  'author': 'Donald J. Trump',
  'position': {'ranking': 132, 'score': 7990, 'votes': 100}},
 {'book_id': '45978',
  'title': 'Eldest',
  'author_id': '8349',
  'author': 'Christopher Paolini',
  'position': {'ranking': 133, 'score': 7831, 'votes': 86}},
 {'book_id': '15931',
  'title': 'The Notebook',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 134, 'score': 7654, 'votes': 85}},
 {'book_id': '769658',
  'title': 'Battlefield Earth: A Saga of the Year 3000',
  'author_id': '33503',
  'author': 'L. Ron Hubbard',
  'position': {'ranking': 135, 'score': 7595, 'votes': 91}},
 {'book_id': '2767052',
  'title': 'The Hunger Games',
  'author_id': '153394',
  'author': 'Suzanne Collins',
  'position': {'ranking': 136, 'score': 7519, 'votes': 81}},
 {'book_id': '1618',
  'title': 'The Curious Incident of the Dog in the Night-Time',
  'author_id': '1050',
  'author': 'Mark Haddon',
  'position': {'ranking': 137, 'score': 7365, 'votes': 80}},
 {'book_id': '1953',
  'title': 'A Tale of Two Cities',
  'author_id': '239579',
  'author': 'Charles Dickens',
  'position': {'ranking': 138, 'score': 7125, 'votes': 78}},
 {'book_id': '1326258',
  'title': 'Chosen',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 139, 'score': 7094, 'votes': 80}},
 {'book_id': '196613',
  'title': 'Skinny Bitch: A No-Nonsense, Tough-Love Guide for Savvy Girls Who Want to Stop Eating Crap and Start Looking Fabulous!',
  'author_id': '114558',
  'author': 'Rory Freedman',
  'position': {'ranking': 140, 'score': 7088, 'votes': 84}},
 {'book_id': '18619684',
  'title': "The Time Traveler's Wife",
  'author_id': '498072',
  'author': 'Audrey Niffenegger',
  'position': {'ranking': 141, 'score': 7013, 'votes': 75}},
 {'book_id': '2165',
  'title': 'The Old Man and the Sea',
  'author_id': '1455',
  'author': 'Ernest Hemingway',
  'position': {'ranking': 142, 'score': 6995, 'votes': 75}},
 {'book_id': '5148',
  'title': 'A Separate Peace',
  'author_id': '3496',
  'author': 'John Knowles',
  'position': {'ranking': 143, 'score': 6873, 'votes': 73}},
 {'book_id': '6514',
  'title': 'The Bell Jar',
  'author_id': '4379',
  'author': 'Sylvia Plath',
  'position': {'ranking': 144, 'score': 6797, 'votes': 77}},
 {'book_id': '77013',
  'title': 'As I Lay Dying',
  'author_id': '3535',
  'author': 'William Faulkner',
  'position': {'ranking': 145, 'score': 6731, 'votes': 75}},
 {'book_id': '11',
  'title': "The Hitchhiker's Guide to the Galaxy",
  'author_id': '4',
  'author': 'Douglas Adams',
  'position': {'ranking': 146, 'score': 6571, 'votes': 72}},
 {'book_id': '5907',
  'title': 'The Hobbit, or There and Back Again',
  'author_id': '656983',
  'author': 'J.R.R. Tolkien',
  'position': {'ranking': 147, 'score': 6534, 'votes': 75}},
 {'book_id': '30113',
  'title': "Rediscovering God in America: Reflections on the Role of Faith in Our Nation's History and Future",
  'author_id': '5103',
  'author': 'Newt Gingrich',
  'position': {'ranking': 148, 'score': 6397, 'votes': 81}},
 {'book_id': '54270',
  'title': 'Mein Kampf',
  'author_id': '30691',
  'author': 'Adolf Hitler',
  'position': {'ranking': 149, 'score': 6384, 'votes': 72}},
 {'book_id': '960',
  'title': 'Angels & Demons',
  'author_id': '630',
  'author': 'Dan Brown',
  'position': {'ranking': 150, 'score': 6362, 'votes': 71}},
 {'book_id': '2248573',
  'title': 'Brisingr',
  'author_id': '8349',
  'author': 'Christopher Paolini',
  'position': {'ranking': 151, 'score': 6313, 'votes': 70}},
 {'book_id': '266381',
  'title': 'High Crimes and Misdemeanors: The Case Against Bill Clinton',
  'author_id': '2761',
  'author': 'Ann Coulter',
  'position': {'ranking': 152, 'score': 6116, 'votes': 80}},
 {'book_id': '137791',
  'title': 'Divine Secrets of the Ya-Ya Sisterhood',
  'author_id': '3489',
  'author': 'Rebecca Wells',
  'position': {'ranking': 153, 'score': 6095, 'votes': 71}},
 {'book_id': '38447',
  'title': "The Handmaid's Tale",
  'author_id': '3472',
  'author': 'Margaret Atwood',
  'position': {'ranking': 154, 'score': 6076, 'votes': 69}},
 {'book_id': '2623',
  'title': 'Great Expectations',
  'author_id': '239579',
  'author': 'Charles Dickens',
  'position': {'ranking': 155, 'score': 5983, 'votes': 66}},
 {'book_id': '18135',
  'title': 'Romeo and Juliet',
  'author_id': '947',
  'author': 'William Shakespeare',
  'position': {'ranking': 156, 'score': 5979, 'votes': 66}},
 {'book_id': '56157',
  'title': 'The Proper Care and Feeding of Husbands',
  'author_id': '6519027',
  'author': 'Laura Schlessinger',
  'position': {'ranking': 157, 'score': 5895, 'votes': 74}},
 {'book_id': '6068551',
  'title': 'Shiver',
  'author_id': '1330292',
  'author': 'Maggie Stiefvater',
  'position': {'ranking': 158, 'score': 5778, 'votes': 63}},
 {'book_id': '11570',
  'title': 'Dreamcatcher',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 159, 'score': 5776, 'votes': 65}},
 {'book_id': '49195',
  'title': 'My Life',
  'author_id': '5944',
  'author': 'Bill Clinton',
  'position': {'ranking': 160, 'score': 5764, 'votes': 65}},
 {'book_id': '88061',
  'title': 'Dreams from My Father: A Story of Race and Inheritance',
  'author_id': '6356',
  'author': 'Barack  Obama',
  'position': {'ranking': 161, 'score': 5751, 'votes': 66}},
 {'book_id': '4502877',
  'title': 'Midnight Sun [2008 Draft]',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 162, 'score': 5741, 'votes': 70}},
 {'book_id': '4134071',
  'title': 'Hunted',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 163, 'score': 5689, 'votes': 66}},
 {'book_id': '10964',
  'title': 'Outlander',
  'author_id': '3617',
  'author': 'Diana Gabaldon',
  'position': {'ranking': 164, 'score': 5619, 'votes': 62}},
 {'book_id': '2866718',
  'title': 'Untamed',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 165, 'score': 5585, 'votes': 65}},
 {'book_id': '3483',
  'title': 'Special Topics in Calamity Physics',
  'author_id': '2362',
  'author': 'Marisha Pessl',
  'position': {'ranking': 166, 'score': 5567, 'votes': 62}},
 {'book_id': '310259',
  'title': 'Love You Forever',
  'author_id': '6039100',
  'author': 'Robert Munsch',
  'position': {'ranking': 167, 'score': 5432, 'votes': 61}},
 {'book_id': '14743',
  'title': 'The God Delusion',
  'author_id': '1194',
  'author': 'Richard Dawkins',
  'position': {'ranking': 168, 'score': 5424, 'votes': 61}},
 {'book_id': '256566',
  'title': 'Everything Is Illuminated',
  'author_id': '2617',
  'author': 'Jonathan Safran Foer',
  'position': {'ranking': 169, 'score': 5351, 'votes': 59}},
 {'book_id': '1797248',
  'title': 'If I Did It: Confessions of the Killer',
  'author_id': '1744933',
  'author': 'O.J. Simpson',
  'position': {'ranking': 170, 'score': 5317, 'votes': 71}},
 {'book_id': '26582',
  'title': 'The Claiming of Sleeping Beauty',
  'author_id': '437669',
  'author': 'A.N. Roquelaure',
  'position': {'ranking': 171, 'score': 5261, 'votes': 59}},
 {'book_id': '83674',
  'title': 'The Bridges of Madison County',
  'author_id': '28024',
  'author': 'Robert James Waller',
  'position': {'ranking': 172, 'score': 5261, 'votes': 56}},
 {'book_id': '3836',
  'title': 'Don Quixote',
  'author_id': '4037220',
  'author': 'Miguel de Cervantes Saavedra',
  'position': {'ranking': 173, 'score': 5260, 'votes': 58}},
 {'book_id': '3255666',
  'title': 'A Bold Fresh Piece of Humanity',
  'author_id': '27281',
  'author': "Bill O'Reilly",
  'position': {'ranking': 174, 'score': 5132, 'votes': 71}},
 {'book_id': '12898',
  'title': 'Death of a Salesman',
  'author_id': '8120',
  'author': 'Arthur  Miller',
  'position': {'ranking': 175, 'score': 5024, 'votes': 59}},
 {'book_id': '1032',
  'title': 'Trump: The Art of the Deal',
  'author_id': '676',
  'author': 'Donald J. Trump',
  'position': {'ranking': 176, 'score': 4805, 'votes': 67}},
 {'book_id': '12296',
  'title': 'The Scarlet Letter',
  'author_id': '7799',
  'author': 'Nathaniel Hawthorne',
  'position': {'ranking': 177, 'score': 4708, 'votes': 52}},
 {'book_id': '11505797',
  'title': 'Beautiful Disaster',
  'author_id': '4464118',
  'author': 'Jamie McGuire',
  'position': {'ranking': 178, 'score': 4660, 'votes': 51}},
 {'book_id': '4214',
  'title': 'Life of Pi',
  'author_id': '811',
  'author': 'Yann Martel',
  'position': {'ranking': 179, 'score': 4649, 'votes': 52}},
 {'book_id': '2175',
  'title': 'Madame Bovary',
  'author_id': '1461',
  'author': 'Gustave Flaubert',
  'position': {'ranking': 180, 'score': 4619, 'votes': 53}},
 {'book_id': '2324854',
  'title': 'Real Change: From the World That Fails to the World That Works',
  'author_id': '5103',
  'author': 'Newt Gingrich',
  'position': {'ranking': 181, 'score': 4616, 'votes': 67}},
 {'book_id': '22188',
  'title': 'Gossip Girl',
  'author_id': '12665',
  'author': 'Cecily von Ziegesar',
  'position': {'ranking': 182, 'score': 4577, 'votes': 58}},
 {'book_id': '13584236',
  'title': 'Fifty Shades Trilogy',
  'author_id': '4725841',
  'author': 'E.L. James',
  'position': {'ranking': 183, 'score': 4513, 'votes': 53}},
 {'book_id': '153747',
  'title': 'Moby-Dick or, the Whale',
  'author_id': '1624',
  'author': 'Herman Melville',
  'position': {'ranking': 184, 'score': 4509, 'votes': 52}},
 {'book_id': '3648',
  'title': "The Emperor's Children",
  'author_id': '2508',
  'author': 'Claire Messud',
  'position': {'ranking': 185, 'score': 4488, 'votes': 49}},
 {'book_id': '6288',
  'title': 'The Road',
  'author_id': '4178',
  'author': 'Cormac McCarthy',
  'position': {'ranking': 186, 'score': 4447, 'votes': 48}},
 {'book_id': '14975',
  'title': 'Labyrinth',
  'author_id': '9343',
  'author': 'Kate Mosse',
  'position': {'ranking': 187, 'score': 4443, 'votes': 49}},
 {'book_id': '34',
  'title': 'The Fellowship of the Ring',
  'author_id': '656983',
  'author': 'J.R.R. Tolkien',
  'position': {'ranking': 188, 'score': 4437, 'votes': 52}},
 {'book_id': '9844',
  'title': 'Prep',
  'author_id': '6429',
  'author': 'Curtis Sittenfeld',
  'position': {'ranking': 189, 'score': 4426, 'votes': 47}},
 {'book_id': '13103',
  'title': 'The Celestine Prophecy',
  'author_id': '8203',
  'author': 'James Redfield',
  'position': {'ranking': 190, 'score': 4404, 'votes': 49}},
 {'book_id': '18490',
  'title': 'Frankenstein',
  'author_id': '11139',
  'author': 'Mary Wollstonecraft Shelley',
  'position': {'ranking': 191, 'score': 4376, 'votes': 50}},
 {'book_id': '43641',
  'title': 'Water for Elephants',
  'author_id': '24556',
  'author': 'Sara Gruen',
  'position': {'ranking': 192, 'score': 4304, 'votes': 52}},
 {'book_id': '2839',
  'title': 'Bridge to Terabithia',
  'author_id': '1949',
  'author': 'Katherine Paterson',
  'position': {'ranking': 193, 'score': 4216, 'votes': 48}},
 {'book_id': '27523',
  'title': 'Left Behind',
  'author_id': '7625163',
  'author': 'Tim LaHaye',
  'position': {'ranking': 194, 'score': 4187, 'votes': 49}},
 {'book_id': '76334',
  'title': "A New Earth: Awakening to Your Life's Purpose",
  'author_id': '4493',
  'author': 'Eckhart Tolle',
  'position': {'ranking': 195, 'score': 4185, 'votes': 49}},
 {'book_id': '7733',
  'title': "Gulliver's Travels",
  'author_id': '1831',
  'author': 'Jonathan Swift',
  'position': {'ranking': 196, 'score': 4170, 'votes': 47}},
 {'book_id': '1295',
  'title': 'The Clan of the Cave Bear',
  'author_id': '861',
  'author': 'Jean M. Auel',
  'position': {'ranking': 197, 'score': 4148, 'votes': 50}},
 {'book_id': '485894',
  'title': 'The Metamorphosis',
  'author_id': '5223',
  'author': 'Franz Kafka',
  'position': {'ranking': 198, 'score': 4141, 'votes': 46}},
 {'book_id': '9010',
  'title': 'I Hope They Serve Beer in Hell',
  'author_id': '5856',
  'author': 'Tucker Max',
  'position': {'ranking': 199, 'score': 4127, 'votes': 49}},
 {'book_id': '52357',
  'title': 'Beowulf',
  'author_id': '4699102',
  'author': 'Unknown',
  'position': {'ranking': 200, 'score': 4126, 'votes': 47}},
 {'book_id': '15860',
  'title': 'State of Fear',
  'author_id': '5194',
  'author': 'Michael Crichton',
  'position': {'ranking': 201, 'score': 4123, 'votes': 46}},
 {'book_id': '890',
  'title': 'Of Mice and Men',
  'author_id': '585',
  'author': 'John Steinbeck',
  'position': {'ranking': 202, 'score': 4087, 'votes': 45}},
 {'book_id': '3876',
  'title': 'The Sun Also Rises',
  'author_id': '1455',
  'author': 'Ernest Hemingway',
  'position': {'ranking': 203, 'score': 4072, 'votes': 47}},
 {'book_id': '252577',
  'title': "Angela's Ashes",
  'author_id': '3347',
  'author': 'Frank McCourt',
  'position': {'ranking': 204, 'score': 4068, 'votes': 47}},
 {'book_id': '2731276',
  'title': 'The Story of Edgar Sawtelle',
  'author_id': '982213',
  'author': 'David Wroblewski',
  'position': {'ranking': 205, 'score': 4058, 'votes': 46}},
 {'book_id': '49552',
  'title': 'The Stranger',
  'author_id': '957894',
  'author': 'Albert Camus',
  'position': {'ranking': 206, 'score': 4010, 'votes': 44}},
 {'book_id': '179166',
  'title': 'Dianetics: The Modern Science of Mental Health',
  'author_id': '33503',
  'author': 'L. Ron Hubbard',
  'position': {'ranking': 207, 'score': 4009, 'votes': 52}},
 {'book_id': '7069',
  'title': 'The World According to Garp',
  'author_id': '3075',
  'author': 'John Irving',
  'position': {'ranking': 208, 'score': 3895, 'votes': 47}},
 {'book_id': '415',
  'title': "Gravity's Rainbow",
  'author_id': '235',
  'author': 'Thomas Pynchon',
  'position': {'ranking': 209, 'score': 3885, 'votes': 45}},
 {'book_id': '363752',
  'title': 'Bridget Jones: The Edge of Reason',
  'author_id': '3090',
  'author': 'Helen Fielding',
  'position': {'ranking': 210, 'score': 3869, 'votes': 47}},
 {'book_id': '174703',
  'title': "What to Expect When You're Expecting",
  'author_id': '53',
  'author': 'Heidi Murkoff',
  'position': {'ranking': 211, 'score': 3866, 'votes': 43}},
 {'book_id': '6475299',
  'title': 'Arguing with Idiots: How to Stop Small Minds and Big Government',
  'author_id': '188932',
  'author': 'Glenn Beck',
  'position': {'ranking': 212, 'score': 3866, 'votes': 51}},
 {'book_id': '31338',
  'title': 'Memnoch the Devil',
  'author_id': '7577',
  'author': 'Anne Rice',
  'position': {'ranking': 213, 'score': 3836, 'votes': 44}},
 {'book_id': '11486',
  'title': 'The Color Purple',
  'author_id': '7380',
  'author': 'Alice Walker',
  'position': {'ranking': 214, 'score': 3829, 'votes': 45}},
 {'book_id': '50',
  'title': 'Hatchet',
  'author_id': '18',
  'author': 'Gary Paulsen',
  'position': {'ranking': 215, 'score': 3734, 'votes': 40}},
 {'book_id': '76620',
  'title': 'Watership Down',
  'author_id': '7717',
  'author': 'Richard  Adams',
  'position': {'ranking': 216, 'score': 3723, 'votes': 42}},
 {'book_id': '22628',
  'title': 'The Perks of Being a Wallflower',
  'author_id': '12898',
  'author': 'Stephen Chbosky',
  'position': {'ranking': 217, 'score': 3692, 'votes': 42}},
 {'book_id': '11127',
  'title': 'The Chronicles of Narnia',
  'author_id': '1069006',
  'author': 'C.S. Lewis',
  'position': {'ranking': 218, 'score': 3678, 'votes': 42}},
 {'book_id': '2122',
  'title': 'The Fountainhead',
  'author_id': '432',
  'author': 'Ayn Rand',
  'position': {'ranking': 219, 'score': 3584, 'votes': 43}},
 {'book_id': '5203',
  'title': "She's Come Undone",
  'author_id': '3505',
  'author': 'Wally Lamb',
  'position': {'ranking': 220, 'score': 3565, 'votes': 39}},
 {'book_id': '564450',
  'title': 'The Invaders Plan',
  'author_id': '33503',
  'author': 'L. Ron Hubbard',
  'position': {'ranking': 221, 'score': 3520, 'votes': 47}},
 {'book_id': '14201',
  'title': 'Jonathan Strange & Mr Norrell',
  'author_id': '8842',
  'author': 'Susanna Clarke',
  'position': {'ranking': 222, 'score': 3512, 'votes': 39}},
 {'book_id': '366522',
  'title': 'P.S. I Love You',
  'author_id': '7116',
  'author': 'Cecelia Ahern',
  'position': {'ranking': 223, 'score': 3490, 'votes': 39}},
 {'book_id': '157993',
  'title': 'The Little Prince',
  'author_id': '1020792',
  'author': 'Antoine de Saint-Exupéry',
  'position': {'ranking': 224, 'score': 3477, 'votes': 41}},
 {'book_id': '29844228',
  'title': 'Thirteen Reasons Why',
  'author_id': '569269',
  'author': 'Jay Asher',
  'position': {'ranking': 225, 'score': 3467, 'votes': 38}},
 {'book_id': '7735333',
  'title': 'Matched',
  'author_id': '1304470',
  'author': 'Ally Condie',
  'position': {'ranking': 226, 'score': 3462, 'votes': 37}},
 {'book_id': '6304335',
  'title': 'Beautiful Creatures',
  'author_id': '2895706',
  'author': 'Kami Garcia',
  'position': {'ranking': 227, 'score': 3439, 'votes': 39}},
 {'book_id': '15823480',
  'title': 'Anna Karenina',
  'author_id': '128382',
  'author': 'Leo Tolstoy',
  'position': {'ranking': 228, 'score': 3439, 'votes': 41}},
 {'book_id': '33',
  'title': 'The Lord of the Rings',
  'author_id': '656983',
  'author': 'J.R.R. Tolkien',
  'position': {'ranking': 229, 'score': 3425, 'votes': 40}},
 {'book_id': '1885',
  'title': 'Pride and Prejudice',
  'author_id': '1265',
  'author': 'Jane Austen',
  'position': {'ranking': 230, 'score': 3406, 'votes': 38}},
 {'book_id': '5526',
  'title': 'Dear John',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 231, 'score': 3393, 'votes': 42}},
 {'book_id': '23578',
  'title': 'Rush Limbaugh Is a Big Fat Idiot',
  'author_id': '13311',
  'author': 'Al Franken',
  'position': {'ranking': 232, 'score': 3362, 'votes': 41}},
 {'book_id': '462442',
  'title': "The Ten Commandments: The Significance of God's Laws in Everyday Life",
  'author_id': '6519027',
  'author': 'Laura Schlessinger',
  'position': {'ranking': 233, 'score': 3342, 'votes': 47}},
 {'book_id': '16188',
  'title': 'Wideacre',
  'author_id': '9987',
  'author': 'Philippa Gregory',
  'position': {'ranking': 234, 'score': 3281, 'votes': 35}},
 {'book_id': '10799',
  'title': 'A Farewell to Arms',
  'author_id': '1455',
  'author': 'Ernest Hemingway',
  'position': {'ranking': 235, 'score': 3252, 'votes': 38}},
 {'book_id': '395922',
  'title': 'The Awakening',
  'author_id': '50873',
  'author': 'L.J. Smith',
  'position': {'ranking': 236, 'score': 3229, 'votes': 37}},
 {'book_id': '343',
  'title': 'Perfume: The Story of a Murderer',
  'author_id': '39402',
  'author': 'Patrick Süskind',
  'position': {'ranking': 237, 'score': 3214, 'votes': 36}},
 {'book_id': '301082',
  'title': 'Dead Until Dark',
  'author_id': '17061',
  'author': 'Charlaine Harris',
  'position': {'ranking': 238, 'score': 3201, 'votes': 35}},
 {'book_id': '11870085',
  'title': 'The Fault in Our Stars',
  'author_id': '1406384',
  'author': 'John Green',
  'position': {'ranking': 239, 'score': 3193, 'votes': 34}},
 {'book_id': '6',
  'title': 'Harry Potter and the Goblet of Fire',
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 240, 'score': 3166, 'votes': 38}},
 {'book_id': '2187',
  'title': 'Middlesex',
  'author_id': '1467',
  'author': 'Jeffrey Eugenides',
  'position': {'ranking': 241, 'score': 3163, 'votes': 37}},
 {'book_id': '16902',
  'title': 'Walden',
  'author_id': '10264',
  'author': 'Henry David Thoreau',
  'position': {'ranking': 242, 'score': 3133, 'votes': 36}},
 {'book_id': '3159728',
  'title': 'Miley Cyrus/Hannah Montana',
  'author_id': '1346712',
  'author': 'Jennifer Magid',
  'position': {'ranking': 243, 'score': 3129, 'votes': 41}},
 {'book_id': '24929',
  'title': 'Lost',
  'author_id': '7025',
  'author': 'Gregory Maguire',
  'position': {'ranking': 244, 'score': 3115, 'votes': 34}},
 {'book_id': '113310',
  'title': 'The Eight',
  'author_id': '7172',
  'author': 'Katherine Neville',
  'position': {'ranking': 245, 'score': 3110, 'votes': 36}},
 {'book_id': '278210',
  'title': 'The Expected One',
  'author_id': '162077',
  'author': 'Kathleen McGowan',
  'position': {'ranking': 246, 'score': 3101, 'votes': 35}},
 {'book_id': '14942',
  'title': 'Mrs. Dalloway',
  'author_id': '6765',
  'author': 'Virginia Woolf',
  'position': {'ranking': 247, 'score': 3094, 'votes': 36}},
 {'book_id': '2932',
  'title': 'Robinson Crusoe',
  'author_id': '2007',
  'author': 'Daniel Defoe',
  'position': {'ranking': 248, 'score': 3093, 'votes': 36}},
 {'book_id': '35545737',
  'title': 'A Walk to Remember',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 249, 'score': 3090, 'votes': 38}},
 {'book_id': '23577',
  'title': 'Lies & the Lying Liars Who Tell Them: A Fair & Balanced Look at the Right',
  'author_id': '13311',
  'author': 'Al Franken',
  'position': {'ranking': 250, 'score': 3073, 'votes': 35}},
 {'book_id': '37415',
  'title': 'Their Eyes Were Watching God',
  'author_id': '15151',
  'author': 'Zora Neale Hurston',
  'position': {'ranking': 251, 'score': 3070, 'votes': 33}},
 {'book_id': '100915',
  'title': 'The Lion, the Witch and the Wardrobe',
  'author_id': '1069006',
  'author': 'C.S. Lewis',
  'position': {'ranking': 252, 'score': 3070, 'votes': 38}},
 {'book_id': '19063',
  'title': 'The Book Thief',
  'author_id': '11466',
  'author': 'Markus Zusak',
  'position': {'ranking': 253, 'score': 3069, 'votes': 36}},
 {'book_id': '4395',
  'title': 'The Grapes of Wrath',
  'author_id': '585',
  'author': 'John Steinbeck',
  'position': {'ranking': 254, 'score': 3014, 'votes': 34}},
 {'book_id': '18710190',
  'title': 'Allegiant',
  'author_id': '4039811',
  'author': 'Veronica Roth',
  'position': {'ranking': 255, 'score': 2980, 'votes': 32}},
 {'book_id': '6969',
  'title': 'Emma',
  'author_id': '1265',
  'author': 'Jane Austen',
  'position': {'ranking': 256, 'score': 2979, 'votes': 37}},
 {'book_id': '7763',
  'title': 'The Joy Luck Club',
  'author_id': '5246',
  'author': 'Amy Tan',
  'position': {'ranking': 257, 'score': 2950, 'votes': 37}},
 {'book_id': '25347',
  'title': 'Out of Egypt',
  'author_id': '7577',
  'author': 'Anne Rice',
  'position': {'ranking': 258, 'score': 2935, 'votes': 37}},
 {'book_id': '21726',
  'title': 'The Ruins',
  'author_id': '12505',
  'author': 'Scott        Smith',
  'position': {'ranking': 259, 'score': 2928, 'votes': 34}},
 {'book_id': '18342',
  'title': 'It',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 260, 'score': 2927, 'votes': 37}},
 {'book_id': '1923595',
  'title': 'Stop Whining, Start Living',
  'author_id': '6519027',
  'author': 'Laura Schlessinger',
  'position': {'ranking': 261, 'score': 2915, 'votes': 43}},
 {'book_id': '242006',
  'title': 'Running with Scissors',
  'author_id': '3058',
  'author': 'Augusten Burroughs',
  'position': {'ranking': 262, 'score': 2897, 'votes': 32}},
 {'book_id': '7244',
  'title': 'The Poisonwood Bible',
  'author_id': '3541',
  'author': 'Barbara Kingsolver',
  'position': {'ranking': 263, 'score': 2884, 'votes': 34}},
 {'book_id': '2942051',
  'title': 'Miley Cyrus Unauthorized',
  'author_id': '323208',
  'author': 'Jackie Robb',
  'position': {'ranking': 264, 'score': 2884, 'votes': 40}},
 {'book_id': '38296',
  'title': 'The Last of the Mohicans',
  'author_id': '9121',
  'author': 'James Fenimore Cooper',
  'position': {'ranking': 265, 'score': 2872, 'votes': 33}},
 {'book_id': '46799',
  'title': 'Go Ask Alice',
  'author_id': '69007',
  'author': 'Beatrice Sparks',
  'position': {'ranking': 266, 'score': 2869, 'votes': 32}},
 {'book_id': '43758',
  'title': 'The Queen of the Damned',
  'author_id': '7577',
  'author': 'Anne Rice',
  'position': {'ranking': 267, 'score': 2794, 'votes': 34}},
 {'book_id': '43448',
  'title': 'Flowers in the Attic',
  'author_id': '1353301',
  'author': 'V.C. Andrews',
  'position': {'ranking': 268, 'score': 2784, 'votes': 33}},
 {'book_id': '6134826',
  'title': 'Blue Moon',
  'author_id': '200317',
  'author': 'Alyson Noel',
  'position': {'ranking': 269, 'score': 2744, 'votes': 30}},
 {'book_id': '228258',
  'title': 'Tribulation Force',
  'author_id': '7625163',
  'author': 'Tim LaHaye',
  'position': {'ranking': 270, 'score': 2738, 'votes': 35}},
 {'book_id': '7494',
  'title': "Suzanne's Diary for Nicholas",
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 271, 'score': 2729, 'votes': 31}},
 {'book_id': '37470',
  'title': 'The Other Boleyn Girl',
  'author_id': '9987',
  'author': 'Philippa Gregory',
  'position': {'ranking': 272, 'score': 2720, 'votes': 33}},
 {'book_id': '37380',
  'title': 'The Heart Is a Lonely Hunter',
  'author_id': '3506',
  'author': 'Carson McCullers',
  'position': {'ranking': 273, 'score': 2708, 'votes': 31}},
 {'book_id': '30474',
  'title': 'The Communist Manifesto',
  'author_id': '7084',
  'author': 'Karl Marx',
  'position': {'ranking': 274, 'score': 2707, 'votes': 32}},
 {'book_id': '29059',
  'title': 'Choke',
  'author_id': '2546',
  'author': 'Chuck Palahniuk',
  'position': {'ranking': 275, 'score': 2707, 'votes': 30}},
 {'book_id': '8732',
  'title': 'The Red Pony',
  'author_id': '585',
  'author': 'John Steinbeck',
  'position': {'ranking': 276, 'score': 2703, 'votes': 31}},
 {'book_id': '6759',
  'title': 'Infinite Jest',
  'author_id': '4339',
  'author': 'David Foster Wallace',
  'position': {'ranking': 277, 'score': 2653, 'votes': 29}},
 {'book_id': '249',
  'title': 'Tropic of Cancer',
  'author_id': '147',
  'author': 'Henry Miller',
  'position': {'ranking': 278, 'score': 2646, 'votes': 32}},
 {'book_id': '41681',
  'title': 'The Jungle',
  'author_id': '23510',
  'author': 'Upton Sinclair',
  'position': {'ranking': 279, 'score': 2634, 'votes': 31}},
 {'book_id': '7437',
  'title': 'Naked Lunch',
  'author_id': '4462369',
  'author': 'William S. Burroughs',
  'position': {'ranking': 280, 'score': 2613, 'votes': 30}},
 {'book_id': '7603',
  'title': 'Reading Lolita in Tehran: A Memoir in Books',
  'author_id': '5151',
  'author': 'Azar Nafisi',
  'position': {'ranking': 281, 'score': 2612, 'votes': 32}},
 {'book_id': '42432',
  'title': 'God Emperor of Dune',
  'author_id': '58',
  'author': 'Frank Herbert',
  'position': {'ranking': 282, 'score': 2601, 'votes': 29}},
 {'book_id': '424442',
  'title': 'Wild Animus',
  'author_id': '239371',
  'author': 'Rich Shapero',
  'position': {'ranking': 283, 'score': 2579, 'votes': 27}},
 {'book_id': '77203',
  'title': 'The Kite Runner',
  'author_id': '569',
  'author': 'Khaled Hosseini',
  'position': {'ranking': 284, 'score': 2551, 'votes': 29}},
 {'book_id': '7778981',
  'title': 'Halo',
  'author_id': '696372',
  'author': 'Alexandra Adornetto',
  'position': {'ranking': 285, 'score': 2547, 'votes': 28}},
 {'book_id': '17162',
  'title': 'The Chocolate War',
  'author_id': '10442',
  'author': 'Robert Cormier',
  'position': {'ranking': 286, 'score': 2517, 'votes': 28}},
 {'book_id': '50798',
  'title': 'Jude the Obscure',
  'author_id': '15905',
  'author': 'Thomas Hardy',
  'position': {'ranking': 287, 'score': 2484, 'votes': 28}},
 {'book_id': '13747',
  'title': 'Julie and Julia: 365 Days, 524 Recipes, 1 Tiny Apartment Kitchen',
  'author_id': '8546',
  'author': 'Julie Powell',
  'position': {'ranking': 288, 'score': 2428, 'votes': 27}},
 {'book_id': '1431',
  'title': 'Veronika Decides to Die',
  'author_id': '566',
  'author': 'Paulo Coelho',
  'position': {'ranking': 289, 'score': 2411, 'votes': 26}},
 {'book_id': '1845',
  'title': 'Into the Wild',
  'author_id': '1235',
  'author': 'Jon Krakauer',
  'position': {'ranking': 290, 'score': 2405, 'votes': 27}},
 {'book_id': '1078',
  'title': 'The Good Earth',
  'author_id': '704',
  'author': 'Pearl S. Buck',
  'position': {'ranking': 291, 'score': 2395, 'votes': 28}},
 {'book_id': '1923820',
  'title': 'Holy Bible: King James Version',
  'author_id': '5158478',
  'author': 'Anonymous',
  'position': {'ranking': 292, 'score': 2393, 'votes': 26}},
 {'book_id': '310612',
  'title': 'A Confederacy of Dunces',
  'author_id': '3049',
  'author': 'John Kennedy Toole',
  'position': {'ranking': 293, 'score': 2390, 'votes': 26}},
 {'book_id': '32416',
  'title': 'Hannibal Rising',
  'author_id': '12455',
  'author': 'Thomas  Harris',
  'position': {'ranking': 294, 'score': 2388, 'votes': 29}},
 {'book_id': '131797',
  'title': 'Ancient Evenings',
  'author_id': '7927',
  'author': 'Norman Mailer',
  'position': {'ranking': 295, 'score': 2349, 'votes': 30}},
 {'book_id': '17150',
  'title': 'My Ántonia',
  'author_id': '881203',
  'author': 'Willa Cather',
  'position': {'ranking': 296, 'score': 2341, 'votes': 28}},
 {'book_id': '40580',
  'title': 'Stupid White Men',
  'author_id': '3154596',
  'author': 'Michael Moore',
  'position': {'ranking': 297, 'score': 2328, 'votes': 29}},
 {'book_id': '7791997',
  'title': 'Crescendo',
  'author_id': '2876763',
  'author': 'Becca Fitzpatrick',
  'position': {'ranking': 298, 'score': 2319, 'votes': 26}},
 {'book_id': '54539',
  'title': 'Silas Marner',
  'author_id': '173',
  'author': 'George Eliot',
  'position': {'ranking': 299, 'score': 2314, 'votes': 28}},
 {'book_id': '6148028',
  'title': 'Catching Fire',
  'author_id': '153394',
  'author': 'Suzanne Collins',
  'position': {'ranking': 300, 'score': 2313, 'votes': 25}},
 {'book_id': '7747374',
  'title': 'I Am Number Four',
  'author_id': '3380908',
  'author': 'Pittacus Lore',
  'position': {'ranking': 301, 'score': 2285, 'votes': 25}},
 {'book_id': '7740152',
  'title': 'Torment',
  'author_id': '2905297',
  'author': 'Lauren Kate',
  'position': {'ranking': 302, 'score': 2285, 'votes': 25}},
 {'book_id': '3',
  'title': "Harry Potter and the Sorcerer's Stone",
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 303, 'score': 2275, 'votes': 26}},
 {'book_id': '7661',
  'title': 'Next',
  'author_id': '5194',
  'author': 'Michael Crichton',
  'position': {'ranking': 304, 'score': 2263, 'votes': 26}},
 {'book_id': '872333',
  'title': 'Blue Bloods',
  'author_id': '21911',
  'author': 'Melissa de la Cruz',
  'position': {'ranking': 305, 'score': 2255, 'votes': 25}},
 {'book_id': '1198449',
  'title': "Why the Real Estate Boom Will Not Bust - And How You Can Profit from It: How to Build Wealth in Today's Expanding Real Estate Market",
  'author_id': '434489',
  'author': 'David Lereah',
  'position': {'ranking': 306, 'score': 2220, 'votes': 30}},
 {'book_id': '13521',
  'title': 'Son of a Witch',
  'author_id': '7025',
  'author': 'Gregory Maguire',
  'position': {'ranking': 307, 'score': 2205, 'votes': 24}},
 {'book_id': '17660',
  'title': 'The Tommyknockers',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 308, 'score': 2204, 'votes': 26}},
 {'book_id': '27528',
  'title': 'Nicolae',
  'author_id': '7625163',
  'author': 'Tim LaHaye',
  'position': {'ranking': 309, 'score': 2201, 'votes': 27}},
 {'book_id': '6149',
  'title': 'Beloved',
  'author_id': '3534',
  'author': 'Toni Morrison',
  'position': {'ranking': 310, 'score': 2201, 'votes': 24}},
 {'book_id': '946001',
  'title': 'Crossing Over',
  'author_id': '72148',
  'author': 'John Edward',
  'position': {'ranking': 311, 'score': 2200, 'votes': 29}},
 {'book_id': '373755',
  'title': 'Absalom, Absalom!',
  'author_id': '3535',
  'author': 'William Faulkner',
  'position': {'ranking': 312, 'score': 2196, 'votes': 26}},
 {'book_id': '3821929',
  'title': 'Psychic Healing: Using the Tools of a Medium to Cure Whatever Ails You',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 313, 'score': 2165, 'votes': 33}},
 {'book_id': '17250',
  'title': 'The Crucible',
  'author_id': '8120',
  'author': 'Arthur  Miller',
  'position': {'ranking': 314, 'score': 2139, 'votes': 26}},
 {'book_id': '43369',
  'title': 'God Is Not Great: How Religion Poisons Everything',
  'author_id': '3956',
  'author': 'Christopher Hitchens',
  'position': {'ranking': 315, 'score': 2134, 'votes': 27}},
 {'book_id': '890143',
  'title': 'The Clique',
  'author_id': '4605',
  'author': 'Lisi Harrison',
  'position': {'ranking': 316, 'score': 2123, 'votes': 26}},
 {'book_id': '196614',
  'title': 'Skinny Bitch in the Kitch: Kick-Ass Solutions for Hungry Girls Who Want to Stop Cooking Crap',
  'author_id': '114558',
  'author': 'Rory Freedman',
  'position': {'ranking': 317, 'score': 2099, 'votes': 29}},
 {'book_id': '4406',
  'title': 'East of Eden',
  'author_id': '585',
  'author': 'John Steinbeck',
  'position': {'ranking': 318, 'score': 2098, 'votes': 27}},
 {'book_id': '65605',
  'title': "The Magician's Nephew",
  'author_id': '1069006',
  'author': 'C.S. Lewis',
  'position': {'ranking': 319, 'score': 2098, 'votes': 24}},
 {'book_id': '17245',
  'title': 'Dracula',
  'author_id': '6988',
  'author': 'Bram Stoker',
  'position': {'ranking': 320, 'score': 2098, 'votes': 26}},
 {'book_id': '1381',
  'title': 'The Odyssey',
  'author_id': '903',
  'author': 'Homer',
  'position': {'ranking': 321, 'score': 2089, 'votes': 25}},
 {'book_id': '5358',
  'title': 'The Firm',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 322, 'score': 2077, 'votes': 25}},
 {'book_id': '6262365',
  'title': 'Tempted',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 323, 'score': 2045, 'votes': 23}},
 {'book_id': '30236962',
  'title': 'The Historian',
  'author_id': '5918',
  'author': 'Elizabeth Kostova',
  'position': {'ranking': 324, 'score': 2027, 'votes': 23}},
 {'book_id': '14935',
  'title': 'Sense and Sensibility',
  'author_id': '1265',
  'author': 'Jane Austen',
  'position': {'ranking': 325, 'score': 2018, 'votes': 24}},
 {'book_id': '10909',
  'title': 'The Tenth Circle',
  'author_id': '7128',
  'author': 'Jodi Picoult',
  'position': {'ranking': 326, 'score': 2010, 'votes': 23}},
 {'book_id': '52036',
  'title': 'Siddhartha',
  'author_id': '1113469',
  'author': 'Hermann Hesse',
  'position': {'ranking': 327, 'score': 1983, 'votes': 22}},
 {'book_id': '4066507',
  'title': "Change We Can Believe In: Barack Obama's Plan to Renew America's Promise",
  'author_id': '6356',
  'author': 'Barack  Obama',
  'position': {'ranking': 328, 'score': 1954, 'votes': 25}},
 {'book_id': '56073',
  'title': 'Living History',
  'author_id': '2778471',
  'author': 'Hillary Rodham Clinton',
  'position': {'ranking': 329, 'score': 1952, 'votes': 24}},
 {'book_id': '84369',
  'title': 'The Last Battle',
  'author_id': '1069006',
  'author': 'C.S. Lewis',
  'position': {'ranking': 330, 'score': 1948, 'votes': 24}},
 {'book_id': '320',
  'title': 'One Hundred Years of Solitude',
  'author_id': '13450',
  'author': 'Gabriel García Márquez',
  'position': {'ranking': 331, 'score': 1914, 'votes': 20}},
 {'book_id': '90192',
  'title': 'The House of the Seven Gables',
  'author_id': '7799',
  'author': 'Nathaniel Hawthorne',
  'position': {'ranking': 332, 'score': 1910, 'votes': 23}},
 {'book_id': '3934321',
  'title': 'Nightfall',
  'author_id': '50873',
  'author': 'L.J. Smith',
  'position': {'ranking': 333, 'score': 1901, 'votes': 21}},
 {'book_id': '24800',
  'title': 'House of Leaves',
  'author_id': '13974',
  'author': 'Mark Z. Danielewski',
  'position': {'ranking': 334, 'score': 1890, 'votes': 21}},
 {'book_id': '29100224',
  'title': 'The Seventh Plague',
  'author_id': '38809',
  'author': 'James Rollins',
  'position': {'ranking': 335, 'score': 1882, 'votes': 19}},
 {'book_id': '13335037',
  'title': 'Divergent',
  'author_id': '4039811',
  'author': 'Veronica Roth',
  'position': {'ranking': 336, 'score': 1857, 'votes': 21}},
 {'book_id': '130580',
  'title': 'Old Yeller',
  'author_id': '75091',
  'author': 'Fred Gipson',
  'position': {'ranking': 337, 'score': 1834, 'votes': 23}},
 {'book_id': '60748',
  'title': 'A Child Called "It"',
  'author_id': '1881',
  'author': 'Dave Pelzer',
  'position': {'ranking': 338, 'score': 1834, 'votes': 21}},
 {'book_id': '14748',
  'title': 'Good in Bed',
  'author_id': '9212',
  'author': 'Jennifer Weiner',
  'position': {'ranking': 339, 'score': 1808, 'votes': 21}},
 {'book_id': '305234',
  'title': 'Wicked Lovely',
  'author_id': '175855',
  'author': 'Melissa Marr',
  'position': {'ranking': 340, 'score': 1808, 'votes': 20}},
 {'book_id': '2666',
  'title': 'The Bonfire of the Vanities',
  'author_id': '3083854',
  'author': 'Tom Wolfe',
  'position': {'ranking': 341, 'score': 1801, 'votes': 22}},
 {'book_id': '136251',
  'title': 'Harry Potter and the Deathly Hallows',
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 342, 'score': 1800, 'votes': 21}},
 {'book_id': '49436',
  'title': "Three Cups of Tea: One Man's Mission to Promote Peace ... One School at a Time",
  'author_id': '27837',
  'author': 'Greg Mortenson',
  'position': {'ranking': 343, 'score': 1788, 'votes': 21}},
 {'book_id': '28194',
  'title': 'Inkheart',
  'author_id': '15873',
  'author': 'Cornelia Funke',
  'position': {'ranking': 344, 'score': 1786, 'votes': 20}},
 {'book_id': '6853',
  'title': 'One for the Money',
  'author_id': '2384',
  'author': 'Janet Evanovich',
  'position': {'ranking': 345, 'score': 1770, 'votes': 22}},
 {'book_id': '1829709',
  'title': 'The Final Warning',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 346, 'score': 1769, 'votes': 21}},
 {'book_id': '4667024',
  'title': 'The Help',
  'author_id': '1943477',
  'author': 'Kathryn Stockett',
  'position': {'ranking': 347, 'score': 1768, 'votes': 21}},
 {'book_id': '46787',
  'title': "Uncle Tom's Cabin",
  'author_id': '26242',
  'author': 'Harriet Beecher Stowe',
  'position': {'ranking': 348, 'score': 1751, 'votes': 23}},
 {'book_id': '6581511',
  'title': 'Shadowland',
  'author_id': '200317',
  'author': 'Alyson Noel',
  'position': {'ranking': 349, 'score': 1740, 'votes': 20}},
 {'book_id': '452306',
  'title': 'The Sisterhood of the Traveling Pants',
  'author_id': '3681',
  'author': 'Ann Brashares',
  'position': {'ranking': 350, 'score': 1721, 'votes': 21}},
 {'book_id': '4929705',
  'title': 'A Reliable Wife',
  'author_id': '266461',
  'author': 'Robert Goolrick',
  'position': {'ranking': 351, 'score': 1715, 'votes': 18}},
 {'book_id': '23576',
  'title': 'The Truth with Jokes',
  'author_id': '13311',
  'author': 'Al Franken',
  'position': {'ranking': 352, 'score': 1706, 'votes': 21}},
 {'book_id': '8099187',
  'title': 'Decision Points',
  'author_id': '13747',
  'author': 'George W. Bush',
  'position': {'ranking': 353, 'score': 1699, 'votes': 27}},
 {'book_id': '77142',
  'title': 'Snow Falling on Cedars',
  'author_id': '1873',
  'author': 'David Guterson',
  'position': {'ranking': 354, 'score': 1693, 'votes': 20}},
 {'book_id': '1869',
  'title': 'Nickel and Dimed: On (Not) Getting by in America',
  'author_id': '1257',
  'author': 'Barbara Ehrenreich',
  'position': {'ranking': 355, 'score': 1675, 'votes': 20}},
 {'book_id': '1056627',
  'title': 'Become a Better You: 7 Keys to Improving Your Life Every Day',
  'author_id': '55044',
  'author': 'Joel Osteen',
  'position': {'ranking': 356, 'score': 1673, 'votes': 25}},
 {'book_id': '128029',
  'title': 'A Thousand Splendid Suns',
  'author_id': '569',
  'author': 'Khaled Hosseini',
  'position': {'ranking': 357, 'score': 1666, 'votes': 20}},
 {'book_id': '17841',
  'title': "Foucault's Pendulum",
  'author_id': '1730',
  'author': 'Umberto Eco',
  'position': {'ranking': 358, 'score': 1663, 'votes': 19}},
 {'book_id': '37743',
  'title': 'Forever . . .',
  'author_id': '12942',
  'author': 'Judy Blume',
  'position': {'ranking': 359, 'score': 1658, 'votes': 19}},
 {'book_id': '34088743',
  'title': 'أرض السافلين',
  'author_id': '8473982',
  'author': 'أحمد خالد مصطفى',
  'position': {'ranking': 360, 'score': 1651, 'votes': 17}},
 {'book_id': '32234',
  'title': 'White Oleander',
  'author_id': '3540',
  'author': 'Janet Fitch',
  'position': {'ranking': 361, 'score': 1646, 'votes': 18}},
 {'book_id': '13152',
  'title': 'The Angel Experiment',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 362, 'score': 1644, 'votes': 19}},
 {'book_id': '13496',
  'title': 'A Game of Thrones',
  'author_id': '346732',
  'author': 'George R.R. Martin',
  'position': {'ranking': 363, 'score': 1629, 'votes': 19}},
 {'book_id': '2794',
  'title': 'The Crying of Lot 49',
  'author_id': '235',
  'author': 'Thomas Pynchon',
  'position': {'ranking': 364, 'score': 1627, 'votes': 18}},
 {'book_id': '24583',
  'title': 'The Adventures of Tom Sawyer',
  'author_id': '1244',
  'author': 'Mark Twain',
  'position': {'ranking': 365, 'score': 1620, 'votes': 20}},
 {'book_id': '816720',
  'title': 'The Witch of Portobello',
  'author_id': '566',
  'author': 'Paulo Coelho',
  'position': {'ranking': 366, 'score': 1619, 'votes': 18}},
 {'book_id': '323355',
  'title': 'The Book of Mormon: Another Testament of Jesus Christ',
  'author_id': '3009967',
  'author': 'Joseph Smith Jr.',
  'position': {'ranking': 367, 'score': 1613, 'votes': 22}},
 {'book_id': '15881',
  'title': 'Harry Potter and the Chamber of Secrets',
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 368, 'score': 1612, 'votes': 19}},
 {'book_id': '10507293',
  'title': 'The Selection',
  'author_id': '2987125',
  'author': 'Kiera Cass',
  'position': {'ranking': 369, 'score': 1611, 'votes': 19}},
 {'book_id': '6952',
  'title': 'Like Water for Chocolate',
  'author_id': '4694',
  'author': 'Laura Esquivel',
  'position': {'ranking': 370, 'score': 1610, 'votes': 18}},
 {'book_id': '531350',
  'title': 'The Choice',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 371, 'score': 1605, 'votes': 20}},
 {'book_id': '73062',
  'title': 'Scarlett',
  'author_id': '66622',
  'author': 'Alexandra Ripley',
  'position': {'ranking': 372, 'score': 1599, 'votes': 18}},
 {'book_id': '228560',
  'title': "Sophie's Choice",
  'author_id': '7565',
  'author': 'William Styron',
  'position': {'ranking': 373, 'score': 1585, 'votes': 19}},
 {'book_id': '12781',
  'title': 'The Satanic Verses',
  'author_id': '3299',
  'author': 'Salman Rushdie',
  'position': {'ranking': 374, 'score': 1582, 'votes': 20}},
 {'book_id': '9717',
  'title': 'The Unbearable Lightness of Being',
  'author_id': '6343',
  'author': 'Milan Kundera',
  'position': {'ranking': 375, 'score': 1572, 'votes': 17}},
 {'book_id': '5246',
  'title': 'Ethan Frome',
  'author_id': '16',
  'author': 'Edith Wharton',
  'position': {'ranking': 376, 'score': 1571, 'votes': 17}},
 {'book_id': '4953',
  'title': 'A Heartbreaking Work of Staggering Genius',
  'author_id': '3371',
  'author': 'Dave Eggers',
  'position': {'ranking': 377, 'score': 1565, 'votes': 18}},
 {'book_id': '345627',
  'title': 'Vampire Academy',
  'author_id': '137902',
  'author': 'Richelle Mead',
  'position': {'ranking': 378, 'score': 1565, 'votes': 18}},
 {'book_id': '18373',
  'title': 'Flowers for Algernon',
  'author_id': '11072',
  'author': 'Daniel Keyes',
  'position': {'ranking': 379, 'score': 1557, 'votes': 19}},
 {'book_id': '19288043',
  'title': 'Gone Girl',
  'author_id': '2383',
  'author': 'Gillian Flynn',
  'position': {'ranking': 380, 'score': 1541, 'votes': 17}},
 {'book_id': '31333',
  'title': 'Violin',
  'author_id': '7577',
  'author': 'Anne Rice',
  'position': {'ranking': 381, 'score': 1534, 'votes': 19}},
 {'book_id': '28676',
  'title': 'American Psycho',
  'author_id': '2751',
  'author': 'Bret Easton Ellis',
  'position': {'ranking': 382, 'score': 1525, 'votes': 17}},
 {'book_id': '370493',
  'title': 'The Giving Tree',
  'author_id': '435477',
  'author': 'Shel Silverstein',
  'position': {'ranking': 383, 'score': 1523, 'votes': 17}},
 {'book_id': '83221',
  'title': 'Mr. Darcy Takes a Wife: Pride and Prejudice Continues',
  'author_id': '47556',
  'author': 'Linda Berdoll',
  'position': {'ranking': 384, 'score': 1520, 'votes': 18}},
 {'book_id': '11713',
  'title': 'The English Patient',
  'author_id': '4030',
  'author': 'Michael Ondaatje',
  'position': {'ranking': 385, 'score': 1519, 'votes': 17}},
 {'book_id': '7144',
  'title': 'Crime and Punishment',
  'author_id': '3137322',
  'author': 'Fyodor Dostoyevsky',
  'position': {'ranking': 386, 'score': 1516, 'votes': 18}},
 {'book_id': '29797',
  'title': "The Pilgrim's Progress",
  'author_id': '16244',
  'author': 'John Bunyan',
  'position': {'ranking': 387, 'score': 1513, 'votes': 19}},
 {'book_id': '16640',
  'title': 'The Sorrows of Young Werther',
  'author_id': '285217',
  'author': 'Johann Wolfgang von Goethe',
  'position': {'ranking': 388, 'score': 1509, 'votes': 16}},
 {'book_id': '32499',
  'title': 'The Pelican Brief',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 389, 'score': 1502, 'votes': 18}},
 {'book_id': '24770',
  'title': 'Uglies',
  'author_id': '13957',
  'author': 'Scott Westerfeld',
  'position': {'ranking': 390, 'score': 1496, 'votes': 17}},
 {'book_id': '4894',
  'title': 'Who Moved My Cheese?',
  'author_id': '3340',
  'author': 'Spencer Johnson',
  'position': {'ranking': 391, 'score': 1489, 'votes': 17}},
 {'book_id': '39999',
  'title': 'The Boy in the Striped Pajamas',
  'author_id': '7195',
  'author': 'John Boyne',
  'position': {'ranking': 392, 'score': 1488, 'votes': 18}},
 {'book_id': '5359',
  'title': 'The Client',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 393, 'score': 1487, 'votes': 19}},
 {'book_id': '1274',
  'title': 'Men Are from Mars, Women Are from Venus',
  'author_id': '848',
  'author': 'John Gray',
  'position': {'ranking': 394, 'score': 1484, 'votes': 20}},
 {'book_id': '1031',
  'title': 'Trump: Think Like a Billionaire: Everything You Need to Know About Success, Real Estate, and Life',
  'author_id': '676',
  'author': 'Donald J. Trump',
  'position': {'ranking': 395, 'score': 1483, 'votes': 23}},
 {'book_id': '18512',
  'title': 'The Return of the King',
  'author_id': '656983',
  'author': 'J.R.R. Tolkien',
  'position': {'ranking': 396, 'score': 1482, 'votes': 20}},
 {'book_id': '3777732',
  'title': 'City of Glass',
  'author_id': '150038',
  'author': 'Cassandra Clare',
  'position': {'ranking': 397, 'score': 1482, 'votes': 17}},
 {'book_id': '1256194',
  'title': 'The Savage Nation: Saving America from the Liberal Assault on Our Borders, Language, and Culture',
  'author_id': '14086',
  'author': 'Michael Savage',
  'position': {'ranking': 398, 'score': 1465, 'votes': 25}},
 {'book_id': '2865',
  'title': 'Girl with a Pearl Earring',
  'author_id': '1973',
  'author': 'Tracy Chevalier',
  'position': {'ranking': 399, 'score': 1455, 'votes': 18}},
 {'book_id': '43945',
  'title': "Portnoy's Complaint",
  'author_id': '463',
  'author': 'Philip Roth',
  'position': {'ranking': 400, 'score': 1454, 'votes': 22}},
 {'book_id': '46170',
  'title': 'For Whom the Bell Tolls',
  'author_id': '1455',
  'author': 'Ernest Hemingway',
  'position': {'ranking': 401, 'score': 1453, 'votes': 18}},
 {'book_id': '4407',
  'title': 'American Gods',
  'author_id': '1221698',
  'author': 'Neil Gaiman',
  'position': {'ranking': 402, 'score': 1451, 'votes': 16}},
 {'book_id': '9915',
  'title': 'Less Than Zero',
  'author_id': '2751',
  'author': 'Bret Easton Ellis',
  'position': {'ranking': 403, 'score': 1451, 'votes': 16}},
 {'book_id': '17383917',
  'title': 'The Screwtape Letters',
  'author_id': '1069006',
  'author': 'C.S. Lewis',
  'position': {'ranking': 404, 'score': 1448, 'votes': 19}},
 {'book_id': '11901',
  'title': 'The Witching Hour',
  'author_id': '7577',
  'author': 'Anne Rice',
  'position': {'ranking': 405, 'score': 1445, 'votes': 17}},
 {'book_id': '22288',
  'title': 'Haunted',
  'author_id': '2546',
  'author': 'Chuck Palahniuk',
  'position': {'ranking': 406, 'score': 1433, 'votes': 17}},
 {'book_id': '1091633',
  'title': 'All I Really Need to Know I Learned in Kindergarten',
  'author_id': '19630',
  'author': 'Robert Fulghum',
  'position': {'ranking': 407, 'score': 1429, 'votes': 18}},
 {'book_id': '5355',
  'title': 'The Chamber',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 408, 'score': 1429, 'votes': 17}},
 {'book_id': '6150',
  'title': 'Cry, the Beloved Country',
  'author_id': '3527',
  'author': 'Alan Paton',
  'position': {'ranking': 409, 'score': 1418, 'votes': 15}},
 {'book_id': '119073',
  'title': 'The Name of the Rose',
  'author_id': '1730',
  'author': 'Umberto Eco',
  'position': {'ranking': 410, 'score': 1411, 'votes': 17}},
 {'book_id': '9712',
  'title': 'Love in the Time of Cholera',
  'author_id': '13450',
  'author': 'Gabriel García Márquez',
  'position': {'ranking': 411, 'score': 1409, 'votes': 16}},
 {'book_id': '10073',
  'title': 'A Long Way Down',
  'author_id': '2929',
  'author': 'Nick Hornby',
  'position': {'ranking': 412, 'score': 1404, 'votes': 15}},
 {'book_id': '219205',
  'title': "Lord Foul's Bane",
  'author_id': '12980',
  'author': 'Stephen R. Donaldson',
  'position': {'ranking': 413, 'score': 1404, 'votes': 15}},
 {'book_id': '1582996',
  'title': 'City of Ashes',
  'author_id': '150038',
  'author': 'Cassandra Clare',
  'position': {'ranking': 414, 'score': 1398, 'votes': 16}},
 {'book_id': '1661957',
  'title': 'Wake',
  'author_id': '767547',
  'author': 'Lisa McMann',
  'position': {'ranking': 415, 'score': 1392, 'votes': 15}},
 {'book_id': '1630729',
  'title': 'The Book of Love',
  'author_id': '162077',
  'author': 'Kathleen McGowan',
  'position': {'ranking': 416, 'score': 1387, 'votes': 16}},
 {'book_id': '32067',
  'title': "Lady Chatterley's Lover",
  'author_id': '17623',
  'author': 'D.H. Lawrence',
  'position': {'ranking': 417, 'score': 1381, 'votes': 18}},
 {'book_id': '9369720',
  'title': 'Passion',
  'author_id': '2905297',
  'author': 'Lauren Kate',
  'position': {'ranking': 418, 'score': 1376, 'votes': 15}},
 {'book_id': '417549',
  'title': 'Pamela',
  'author_id': '17505',
  'author': 'Samuel Richardson',
  'position': {'ranking': 419, 'score': 1373, 'votes': 15}},
 {'book_id': '6406',
  'title': "Sylvia Browne's Book of Angels",
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 420, 'score': 1370, 'votes': 21}},
 {'book_id': '6334',
  'title': 'Never Let Me Go',
  'author_id': '4280',
  'author': 'Kazuo Ishiguro',
  'position': {'ranking': 421, 'score': 1367, 'votes': 16}},
 {'book_id': '668',
  'title': 'We the Living',
  'author_id': '432',
  'author': 'Ayn Rand',
  'position': {'ranking': 422, 'score': 1363, 'votes': 21}},
 {'book_id': '33993',
  'title': 'Citizen Girl',
  'author_id': '9222',
  'author': 'Emma McLaughlin',
  'position': {'ranking': 423, 'score': 1359, 'votes': 14}},
 {'book_id': '3159726',
  'title': 'Living the Dream: Hannah Montana and Miley Cyrus: The Unofficial Story',
  'author_id': '1346711',
  'author': 'Susan Janic',
  'position': {'ranking': 424, 'score': 1356, 'votes': 22}},
 {'book_id': '32692',
  'title': "Gerald's Game",
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 425, 'score': 1356, 'votes': 15}},
 {'book_id': '22232',
  'title': 'Stargirl',
  'author_id': '12696',
  'author': 'Jerry Spinelli',
  'position': {'ranking': 426, 'score': 1350, 'votes': 15}},
 {'book_id': '4042',
  'title': 'Godless: The Church of Liberalism',
  'author_id': '2761',
  'author': 'Ann Coulter',
  'position': {'ranking': 427, 'score': 1346, 'votes': 20}},
 {'book_id': '9777',
  'title': 'The God of Small Things',
  'author_id': '6134',
  'author': 'Arundhati Roy',
  'position': {'ranking': 428, 'score': 1345, 'votes': 17}},
 {'book_id': '227711',
  'title': 'I Know This Much Is True',
  'author_id': '3505',
  'author': 'Wally Lamb',
  'position': {'ranking': 429, 'score': 1330, 'votes': 15}},
 {'book_id': '169864',
  'title': 'Ten Stupid Things Couples Do to Mess Up Their Relationships',
  'author_id': '6519027',
  'author': 'Laura Schlessinger',
  'position': {'ranking': 430, 'score': 1319, 'votes': 22}},
 {'book_id': '18402',
  'title': 'The Dante Club',
  'author_id': '6247',
  'author': 'Matthew Pearl',
  'position': {'ranking': 431, 'score': 1312, 'votes': 14}},
 {'book_id': '18405',
  'title': 'Gone with the Wind',
  'author_id': '11081',
  'author': 'Margaret Mitchell',
  'position': {'ranking': 432, 'score': 1306, 'votes': 16}},
 {'book_id': '4473',
  'title': 'A Prayer for Owen Meany',
  'author_id': '3075',
  'author': 'John Irving',
  'position': {'ranking': 433, 'score': 1305, 'votes': 15}},
 {'book_id': '129570',
  'title': 'Train Wreck: The Life and Death of Anna Nicole Smith',
  'author_id': '74514',
  'author': 'Donna Hogan',
  'position': {'ranking': 434, 'score': 1297, 'votes': 20}},
 {'book_id': '22070264',
  'title': 'Saving Luke',
  'author_id': '7277862',
  'author': 'Steven Long Mitchell',
  'position': {'ranking': 435, 'score': 1293, 'votes': 13}},
 {'book_id': '5139',
  'title': 'The Devil Wears Prada',
  'author_id': '3490',
  'author': 'Lauren Weisberger',
  'position': {'ranking': 436, 'score': 1290, 'votes': 14}},
 {'book_id': '71728',
  'title': 'Jonathan Livingston Seagull',
  'author_id': '16904',
  'author': 'Richard Bach',
  'position': {'ranking': 437, 'score': 1276, 'votes': 16}},
 {'book_id': '2574850',
  'title': 'Coming Out Straight: Understanding and Healing Homosexuality',
  'author_id': '15306662',
  'author': 'Richard   Cohen',
  'position': {'ranking': 438, 'score': 1272, 'votes': 17}},
 {'book_id': '29056083',
  'title': 'Harry Potter and the Cursed Child: Parts One and Two',
  'author_id': '5042201',
  'author': 'John Tiffany',
  'position': {'ranking': 439, 'score': 1270, 'votes': 14}},
 {'book_id': '9753375',
  'title': 'أرض زيكولا',
  'author_id': '4475150',
  'author': 'عمرو عبدالحميد',
  'position': {'ranking': 440, 'score': 1266, 'votes': 13}},
 {'book_id': '816870',
  'title': 'Johnny Tremain',
  'author_id': '99849',
  'author': 'Esther Forbes',
  'position': {'ranking': 441, 'score': 1265, 'votes': 15}},
 {'book_id': '12691',
  'title': "Marley and Me: Life and Love With the World's Worst Dog",
  'author_id': '8002',
  'author': 'John Grogan',
  'position': {'ranking': 442, 'score': 1264, 'votes': 17}},
 {'book_id': '295',
  'title': 'Treasure Island',
  'author_id': '854076',
  'author': 'Robert Louis Stevenson',
  'position': {'ranking': 443, 'score': 1255, 'votes': 15}},
 {'book_id': '15241',
  'title': 'The Two Towers',
  'author_id': '656983',
  'author': 'J.R.R. Tolkien',
  'position': {'ranking': 444, 'score': 1253, 'votes': 16}},
 {'book_id': '3682',
  'title': 'A Great and Terrible Beauty',
  'author_id': '2526',
  'author': 'Libba Bray',
  'position': {'ranking': 445, 'score': 1252, 'votes': 14}},
 {'book_id': '3679',
  'title': 'On Beauty',
  'author_id': '2522',
  'author': 'Zadie Smith',
  'position': {'ranking': 446, 'score': 1249, 'votes': 15}},
 {'book_id': '6186357',
  'title': 'The Maze Runner',
  'author_id': '348878',
  'author': 'James Dashner',
  'position': {'ranking': 447, 'score': 1248, 'votes': 12}},
 {'book_id': '8667848',
  'title': 'A Discovery of Witches',
  'author_id': '3849415',
  'author': 'Deborah Harkness',
  'position': {'ranking': 448, 'score': 1246, 'votes': 14}},
 {'book_id': '17347634',
  'title': 'Me Before You',
  'author_id': '281810',
  'author': 'Jojo Moyes',
  'position': {'ranking': 449, 'score': 1244, 'votes': 13}},
 {'book_id': '15575',
  'title': 'The Sword of Shannara',
  'author_id': '9629',
  'author': 'Terry Brooks',
  'position': {'ranking': 450, 'score': 1240, 'votes': 15}},
 {'book_id': '10441',
  'title': "The Memory Keeper's Daughter",
  'author_id': '6876',
  'author': 'Kim Edwards',
  'position': {'ranking': 451, 'score': 1236, 'votes': 15}},
 {'book_id': '15985348',
  'title': 'Dead Ever After',
  'author_id': '17061',
  'author': 'Charlaine Harris',
  'position': {'ranking': 452, 'score': 1236, 'votes': 13}},
 {'book_id': '98897',
  'title': 'Why We Want You To Be Rich: Two Men, One Message',
  'author_id': '676',
  'author': 'Donald J. Trump',
  'position': {'ranking': 453, 'score': 1235, 'votes': 22}},
 {'book_id': '4070493',
  'title': 'Need',
  'author_id': '345630',
  'author': 'Carrie Jones',
  'position': {'ranking': 454, 'score': 1233, 'votes': 14}},
 {'book_id': '656',
  'title': 'War and Peace',
  'author_id': '128382',
  'author': 'Leo Tolstoy',
  'position': {'ranking': 455, 'score': 1232, 'votes': 15}},
 {'book_id': '6752378',
  'title': 'City of Fallen Angels',
  'author_id': '150038',
  'author': 'Cassandra Clare',
  'position': {'ranking': 456, 'score': 1232, 'votes': 14}},
 {'book_id': '332613',
  'title': "One Flew Over the Cuckoo's Nest",
  'author_id': '7285',
  'author': 'Ken Kesey',
  'position': {'ranking': 457, 'score': 1219, 'votes': 16}},
 {'book_id': '10429045',
  'title': 'Shatter Me',
  'author_id': '4637539',
  'author': 'Tahereh Mafi',
  'position': {'ranking': 458, 'score': 1219, 'votes': 14}},
 {'book_id': '6101718',
  'title': 'The Magicians',
  'author_id': '142270',
  'author': 'Lev Grossman',
  'position': {'ranking': 459, 'score': 1201, 'votes': 13}},
 {'book_id': '347852',
  'title': 'The Road Less Traveled: A New Psychology of Love, Traditional Values and Spiritual Growth',
  'author_id': '3061',
  'author': 'M. Scott Peck',
  'position': {'ranking': 460, 'score': 1196, 'votes': 16}},
 {'book_id': '18122',
  'title': 'The Amber Spyglass',
  'author_id': '3618',
  'author': 'Philip Pullman',
  'position': {'ranking': 461, 'score': 1194, 'votes': 15}},
 {'book_id': '2479827',
  'title': 'Eragon, Eldest & Brisingr',
  'author_id': '8349',
  'author': 'Christopher Paolini',
  'position': {'ranking': 462, 'score': 1192, 'votes': 14}},
 {'book_id': '6202342',
  'title': 'Her Fearful Symmetry',
  'author_id': '498072',
  'author': 'Audrey Niffenegger',
  'position': {'ranking': 463, 'score': 1192, 'votes': 13}},
 {'book_id': '35800325',
  'title': 'Handbook for Mortals',
  'author_id': '17052081',
  'author': 'Lani Sarem',
  'position': {'ranking': 464, 'score': 1192, 'votes': 12}},
 {'book_id': '228665',
  'title': 'The Eye of the World',
  'author_id': '6252',
  'author': 'Robert Jordan',
  'position': {'ranking': 465, 'score': 1186, 'votes': 13}},
 {'book_id': '17303665',
  'title': 'Fluturi',
  'author_id': '6912414',
  'author': 'Irina Binder',
  'position': {'ranking': 466, 'score': 1181, 'votes': 12}},
 {'book_id': '18517255',
  'title': 'Fluturi: Volumul 1',
  'author_id': '6912414',
  'author': 'Irina Binder',
  'position': {'ranking': 467, 'score': 1181, 'votes': 12}},
 {'book_id': '18517266',
  'title': 'Fluturi: Volumul 2',
  'author_id': '6912414',
  'author': 'Irina Binder',
  'position': {'ranking': 468, 'score': 1181, 'votes': 12}},
 {'book_id': '783291',
  'title': 'The Almost Moon',
  'author_id': '316',
  'author': 'Alice Sebold',
  'position': {'ranking': 469, 'score': 1179, 'votes': 13}},
 {'book_id': '3432478',
  'title': 'The Forest of Hands and Teeth',
  'author_id': '1443712',
  'author': 'Carrie Ryan',
  'position': {'ranking': 470, 'score': 1175, 'votes': 13}},
 {'book_id': '43035',
  'title': 'White Fang',
  'author_id': '1240',
  'author': 'Jack London',
  'position': {'ranking': 471, 'score': 1171, 'votes': 14}},
 {'book_id': '297673',
  'title': 'The Brief Wondrous Life of Oscar Wao',
  'author_id': '55215',
  'author': 'Junot Díaz',
  'position': {'ranking': 472, 'score': 1171, 'votes': 13}},
 {'book_id': '480479',
  'title': 'Under the Tuscan Sun',
  'author_id': '4826',
  'author': 'Frances Mayes',
  'position': {'ranking': 473, 'score': 1166, 'votes': 15}},
 {'book_id': '2722413',
  'title': 'Evernight',
  'author_id': '1192311',
  'author': 'Claudia Gray',
  'position': {'ranking': 474, 'score': 1166, 'votes': 12}},
 {'book_id': '18553',
  'title': 'The Cay',
  'author_id': '11164',
  'author': 'Theodore Taylor',
  'position': {'ranking': 475, 'score': 1164, 'votes': 14}},
 {'book_id': '11337',
  'title': 'The Bluest Eye',
  'author_id': '3534',
  'author': 'Toni Morrison',
  'position': {'ranking': 476, 'score': 1163, 'votes': 13}},
 {'book_id': '727078',
  'title': 'Shadowmancer',
  'author_id': '3053453',
  'author': 'G.P. Taylor',
  'position': {'ranking': 477, 'score': 1162, 'votes': 12}},
 {'book_id': '10637766',
  'title': 'Silence',
  'author_id': '2876763',
  'author': 'Becca Fitzpatrick',
  'position': {'ranking': 478, 'score': 1158, 'votes': 14}},
 {'book_id': '3236307',
  'title': 'Graceling',
  'author_id': '1373880',
  'author': 'Kristin Cashore',
  'position': {'ranking': 479, 'score': 1157, 'votes': 13}},
 {'book_id': '223556',
  'title': 'The Bell Curve: Intelligence and Class Structure in American Life',
  'author_id': '92598',
  'author': 'Richard J. Herrnstein',
  'position': {'ranking': 480, 'score': 1153, 'votes': 15}},
 {'book_id': '755569',
  'title': "Parenthood by Proxy: Don't Have Them if You Won't Raise Them",
  'author_id': '6519027',
  'author': 'Laura Schlessinger',
  'position': {'ranking': 481, 'score': 1153, 'votes': 19}},
 {'book_id': '28187',
  'title': 'The Lightning Thief',
  'author_id': '15872',
  'author': 'Rick Riordan',
  'position': {'ranking': 482, 'score': 1151, 'votes': 13}},
 {'book_id': '43615',
  'title': 'The Gunslinger',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 483, 'score': 1148, 'votes': 14}},
 {'book_id': '10365',
  'title': 'Where the Red Fern Grows',
  'author_id': '6810',
  'author': 'Wilson Rawls',
  'position': {'ranking': 484, 'score': 1148, 'votes': 13}},
 {'book_id': '1241',
  'title': 'A Million Little Pieces',
  'author_id': '822',
  'author': 'James Frey',
  'position': {'ranking': 485, 'score': 1136, 'votes': 14}},
 {'book_id': '69571',
  'title': 'Rich Dad, Poor Dad',
  'author_id': '600',
  'author': 'Robert T. Kiyosaki',
  'position': {'ranking': 486, 'score': 1135, 'votes': 15}},
 {'book_id': '85795',
  'title': 'Slander: Liberal Lies About the American Right',
  'author_id': '2761',
  'author': 'Ann Coulter',
  'position': {'ranking': 487, 'score': 1133, 'votes': 18}},
 {'book_id': '5826',
  'title': 'Bel Canto',
  'author_id': '7136914',
  'author': 'Ann Patchett',
  'position': {'ranking': 488, 'score': 1132, 'votes': 12}},
 {'book_id': '38262',
  'title': 'Moll Flanders',
  'author_id': '2007',
  'author': 'Daniel Defoe',
  'position': {'ranking': 489, 'score': 1127, 'votes': 12}},
 {'book_id': '2',
  'title': 'Harry Potter and the Order of the Phoenix',
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 490, 'score': 1127, 'votes': 14}},
 {'book_id': '7445',
  'title': 'The Glass Castle',
  'author_id': '3275',
  'author': 'Jeannette Walls',
  'position': {'ranking': 491, 'score': 1126, 'votes': 12}},
 {'book_id': '5',
  'title': 'Harry Potter and the Prisoner of Azkaban',
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 492, 'score': 1120, 'votes': 14}},
 {'book_id': '17716',
  'title': 'Waiting for Godot',
  'author_id': '1433597',
  'author': 'Samuel Beckett',
  'position': {'ranking': 493, 'score': 1114, 'votes': 14}},
 {'book_id': '386187',
  'title': 'Midnight in the Garden of Good and Evil',
  'author_id': '4952',
  'author': 'John Berendt',
  'position': {'ranking': 494, 'score': 1112, 'votes': 12}},
 {'book_id': '7061',
  'title': "The No. 1 Ladies' Detective Agency",
  'author_id': '4738',
  'author': 'Alexander McCall Smith',
  'position': {'ranking': 495, 'score': 1108, 'votes': 14}},
 {'book_id': '10614',
  'title': 'Misery',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 496, 'score': 1107, 'votes': 13}},
 {'book_id': '399040',
  'title': 'My First Book of Mormon Stories',
  'author_id': '226383',
  'author': 'Deanna Draper Buck',
  'position': {'ranking': 497, 'score': 1102, 'votes': 18}},
 {'book_id': '24280',
  'title': 'Les Misérables',
  'author_id': '13661',
  'author': 'Victor Hugo',
  'position': {'ranking': 498, 'score': 1101, 'votes': 14}},
 {'book_id': '10917',
  'title': "My Sister's Keeper",
  'author_id': '7128',
  'author': 'Jodi Picoult',
  'position': {'ranking': 499, 'score': 1098, 'votes': 12}},
 {'book_id': '55273978',
  'title': 'Pattaya Youtuber: And other true stories from Thailand',
  'author_id': '20388587',
  'author': 'Walt Gleeson',
  'position': {'ranking': 500, 'score': 1097, 'votes': 11}},
 {'book_id': '21704',
  'title': 'The Black Dahlia',
  'author_id': '2887',
  'author': 'James Ellroy',
  'position': {'ranking': 501, 'score': 1090, 'votes': 13}},
 {'book_id': '266380',
  'title': 'How to Talk to a Liberal (If You Must): The World According to Ann Coulter',
  'author_id': '2761',
  'author': 'Ann Coulter',
  'position': {'ranking': 502, 'score': 1090, 'votes': 18}},
 {'book_id': '18500525',
  'title': 'Rebirth',
  'author_id': '7277862',
  'author': 'Steven Long Mitchell',
  'position': {'ranking': 503, 'score': 1090, 'votes': 11}},
 {'book_id': '3431',
  'title': 'The Five People You Meet in Heaven',
  'author_id': '2331',
  'author': 'Mitch Albom',
  'position': {'ranking': 504, 'score': 1080, 'votes': 12}},
 {'book_id': '7198988',
  'title': 'Dark Flame',
  'author_id': '200317',
  'author': 'Alyson Noel',
  'position': {'ranking': 505, 'score': 1077, 'votes': 13}},
 {'book_id': '17239876',
  'title': 'After Dead: What Came Next in the World of Sookie Stackhouse',
  'author_id': '17061',
  'author': 'Charlaine Harris',
  'position': {'ranking': 506, 'score': 1074, 'votes': 12}},
 {'book_id': '12948',
  'title': 'The Turn of the Screw',
  'author_id': '159',
  'author': 'Henry James',
  'position': {'ranking': 507, 'score': 1069, 'votes': 13}},
 {'book_id': '5297',
  'title': 'The Picture of Dorian Gray',
  'author_id': '3565',
  'author': 'Oscar Wilde',
  'position': {'ranking': 508, 'score': 1067, 'votes': 12}},
 {'book_id': '2152',
  'title': 'The Jane Austen Book Club',
  'author_id': '1448',
  'author': 'Karen Joy Fowler',
  'position': {'ranking': 509, 'score': 1067, 'votes': 12}},
 {'book_id': '85791',
  'title': 'Treason: Liberal Treachery from the Cold War to the War on Terrorism',
  'author_id': '2761',
  'author': 'Ann Coulter',
  'position': {'ranking': 510, 'score': 1066, 'votes': 18}},
 {'book_id': '2612',
  'title': 'The Tipping Point: How Little Things Can Make a Big Difference',
  'author_id': '1439',
  'author': 'Malcolm Gladwell',
  'position': {'ranking': 511, 'score': 1064, 'votes': 14}},
 {'book_id': '455373',
  'title': 'Sphere',
  'author_id': '5194',
  'author': 'Michael Crichton',
  'position': {'ranking': 512, 'score': 1057, 'votes': 14}},
 {'book_id': '3985',
  'title': 'The Amazing Adventures of Kavalier & Clay',
  'author_id': '2715',
  'author': 'Michael Chabon',
  'position': {'ranking': 513, 'score': 1057, 'votes': 12}},
 {'book_id': '85386',
  'title': 'Rabbit, Run',
  'author_id': '6878',
  'author': 'John Updike',
  'position': {'ranking': 514, 'score': 1046, 'votes': 14}},
 {'book_id': '32542',
  'title': 'A Time to Kill',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 515, 'score': 1042, 'votes': 13}},
 {'book_id': '4268',
  'title': 'How to Be Good',
  'author_id': '2929',
  'author': 'Nick Hornby',
  'position': {'ranking': 516, 'score': 1042, 'votes': 12}},
 {'book_id': '38980',
  'title': 'The Princess Diaries',
  'author_id': '11654',
  'author': 'Meg Cabot',
  'position': {'ranking': 517, 'score': 1042, 'votes': 12}},
 {'book_id': '21787',
  'title': 'The Princess Bride',
  'author_id': '12521',
  'author': 'William Goldman',
  'position': {'ranking': 518, 'score': 1039, 'votes': 13}},
 {'book_id': '11735983',
  'title': 'Insurgent',
  'author_id': '4039811',
  'author': 'Veronica Roth',
  'position': {'ranking': 519, 'score': 1034, 'votes': 12}},
 {'book_id': '112725',
  'title': 'Hollywood Wives',
  'author_id': '49699',
  'author': 'Jackie Collins',
  'position': {'ranking': 520, 'score': 1033, 'votes': 17}},
 {'book_id': '574361',
  'title': 'Teachings of the Prophet Joseph Smith',
  'author_id': '3009967',
  'author': 'Joseph Smith Jr.',
  'position': {'ranking': 521, 'score': 1031, 'votes': 17}},
 {'book_id': '8650',
  'title': 'The Lost World',
  'author_id': '5194',
  'author': 'Michael Crichton',
  'position': {'ranking': 522, 'score': 1029, 'votes': 13}},
 {'book_id': '35982',
  'title': 'My Horizontal Life: A Collection of One-Night Stands',
  'author_id': '20357',
  'author': 'Chelsea Handler',
  'position': {'ranking': 523, 'score': 1015, 'votes': 13}},
 {'book_id': '5015',
  'title': 'Saturday',
  'author_id': '2408',
  'author': 'Ian McEwan',
  'position': {'ranking': 524, 'score': 1011, 'votes': 11}},
 {'book_id': '769787',
  'title': "The Atheist's Bible: An Illustrious Collection of Irreverent Thoughts",
  'author_id': '405316',
  'author': 'Joan Konner',
  'position': {'ranking': 525, 'score': 1009, 'votes': 16}},
 {'book_id': '6900',
  'title': 'Tuesdays with Morrie',
  'author_id': '2331',
  'author': 'Mitch Albom',
  'position': {'ranking': 526, 'score': 1008, 'votes': 11}},
 {'book_id': '815870',
  'title': 'Fascinating Womanhood',
  'author_id': '408346',
  'author': 'Helen B. Andelin',
  'position': {'ranking': 527, 'score': 1006, 'votes': 13}},
 {'book_id': '3393124',
  'title': 'Max',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 528, 'score': 1005, 'votes': 12}},
 {'book_id': '318525',
  'title': 'Red Storm Rising',
  'author_id': '3892',
  'author': 'Tom Clancy',
  'position': {'ranking': 529, 'score': 1002, 'votes': 12}},
 {'book_id': '766020',
  'title': 'The Rainbow Fish',
  'author_id': '7518',
  'author': 'Marcus Pfister',
  'position': {'ranking': 530, 'score': 996, 'votes': 11}},
 {'book_id': '6387565',
  'title': 'Witch & Wizard',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 531, 'score': 994, 'votes': 11}},
 {'book_id': '54777620',
  'title': 'Lost in Yaba: Down and Out in Laos',
  'author_id': '20388587',
  'author': 'Walt Gleeson',
  'position': {'ranking': 532, 'score': 993, 'votes': 10}},
 {'book_id': '13628209',
  'title': 'The Boy Who Sneaks in My Bedroom Window',
  'author_id': '5434809',
  'author': 'Kirsty Moseley',
  'position': {'ranking': 533, 'score': 992, 'votes': 11}},
 {'book_id': '544891',
  'title': 'Beastly',
  'author_id': '79589',
  'author': 'Alex Flinn',
  'position': {'ranking': 534, 'score': 990, 'votes': 11}},
 {'book_id': '393060',
  'title': 'The Post-Birthday World',
  'author_id': '45922',
  'author': 'Lionel Shriver',
  'position': {'ranking': 535, 'score': 989, 'votes': 11}},
 {'book_id': '661304',
  'title': 'Rush to Us/Americans Hail Rush Limbaugh',
  'author_id': '7829627',
  'author': 'D. Howard King',
  'position': {'ranking': 536, 'score': 986, 'votes': 17}},
 {'book_id': '263147',
  'title': 'Vampire Kisses',
  'author_id': '153734',
  'author': 'Ellen Schreiber',
  'position': {'ranking': 537, 'score': 980, 'votes': 12}},
 {'book_id': '112',
  'title': 'Children of Dune',
  'author_id': '58',
  'author': 'Frank Herbert',
  'position': {'ranking': 538, 'score': 971, 'votes': 11}},
 {'book_id': '601733',
  'title': 'Psychic Children: Revealing the Intuitive Gifts and Hidden Abilities of Boys and Girls',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 539, 'score': 970, 'votes': 18}},
 {'book_id': '136167',
  'title': 'The Other Side of Midnight',
  'author_id': '9068',
  'author': 'Sidney Sheldon',
  'position': {'ranking': 540, 'score': 964, 'votes': 11}},
 {'book_id': '9361589',
  'title': 'The Night Circus',
  'author_id': '4370565',
  'author': 'Erin Morgenstern',
  'position': {'ranking': 541, 'score': 964, 'votes': 10}},
 {'book_id': '43814',
  'title': 'The Vampire Lestat',
  'author_id': '7577',
  'author': 'Anne Rice',
  'position': {'ranking': 542, 'score': 963, 'votes': 13}},
 {'book_id': '227265',
  'title': 'Ishmael: An Adventure of the Mind and Spirit',
  'author_id': '10330',
  'author': 'Daniel Quinn',
  'position': {'ranking': 543, 'score': 963, 'votes': 10}},
 {'book_id': '231804',
  'title': 'The Outsiders',
  'author_id': '762707',
  'author': 'S.E. Hinton',
  'position': {'ranking': 544, 'score': 962, 'votes': 11}},
 {'book_id': '395871',
  'title': 'The Awakening / The Struggle',
  'author_id': '50873',
  'author': 'L.J. Smith',
  'position': {'ranking': 545, 'score': 961, 'votes': 10}},
 {'book_id': '162898',
  'title': "A Connecticut Yankee in King Arthur's Court",
  'author_id': '1244',
  'author': 'Mark Twain',
  'position': {'ranking': 546, 'score': 954, 'votes': 12}},
 {'book_id': '4981',
  'title': 'Slaughterhouse-Five',
  'author_id': '2778055',
  'author': 'Kurt Vonnegut Jr.',
  'position': {'ranking': 547, 'score': 953, 'votes': 12}},
 {'book_id': '11564',
  'title': 'The Girl Who Loved Tom Gordon',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 548, 'score': 947, 'votes': 10}},
 {'book_id': '7937843',
  'title': 'Room',
  'author_id': '23613',
  'author': 'Emma Donoghue',
  'position': {'ranking': 549, 'score': 939, 'votes': 11}},
 {'book_id': '1',
  'title': 'Harry Potter and the Half-Blood Prince',
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 550, 'score': 939, 'votes': 12}},
 {'book_id': '392266',
  'title': 'Isle of Dogs',
  'author_id': '1025097',
  'author': 'Patricia Cornwell',
  'position': {'ranking': 551, 'score': 936, 'votes': 10}},
 {'book_id': '392217',
  'title': "Hornet's Nest",
  'author_id': '1025097',
  'author': 'Patricia Cornwell',
  'position': {'ranking': 552, 'score': 934, 'votes': 10}},
 {'book_id': '5161',
  'title': 'The Deep End of the Ocean',
  'author_id': '3504',
  'author': 'Jacquelyn Mitchard',
  'position': {'ranking': 553, 'score': 932, 'votes': 10}},
 {'book_id': '18254',
  'title': 'Oliver Twist',
  'author_id': '239579',
  'author': 'Charles Dickens',
  'position': {'ranking': 554, 'score': 921, 'votes': 12}},
 {'book_id': '5204',
  'title': 'We Were the Mulvaneys',
  'author_id': '3524',
  'author': 'Joyce Carol Oates',
  'position': {'ranking': 555, 'score': 912, 'votes': 11}},
 {'book_id': '10873',
  'title': 'Shopgirl',
  'author_id': '7103',
  'author': 'Steve Martin',
  'position': {'ranking': 556, 'score': 910, 'votes': 11}},
 {'book_id': '7745',
  'title': 'Fear and Loathing in Las Vegas',
  'author_id': '5237',
  'author': 'Hunter S. Thompson',
  'position': {'ranking': 557, 'score': 908, 'votes': 11}},
 {'book_id': '4078927',
  'title': 'Little Bee',
  'author_id': '374590',
  'author': 'Chris Cleave',
  'position': {'ranking': 558, 'score': 906, 'votes': 10}},
 {'book_id': '414500',
  'title': 'Kids Are Americans Too',
  'author_id': '27281',
  'author': "Bill O'Reilly",
  'position': {'ranking': 559, 'score': 903, 'votes': 16}},
 {'book_id': '37744',
  'title': 'Wifey',
  'author_id': '12942',
  'author': 'Judy Blume',
  'position': {'ranking': 560, 'score': 899, 'votes': 13}},
 {'book_id': '479415',
  'title': 'The Horse Whisperer',
  'author_id': '6098',
  'author': 'Nicholas Evans',
  'position': {'ranking': 561, 'score': 896, 'votes': 10}},
 {'book_id': '402045',
  'title': 'The Mists of Avalon',
  'author_id': '4841825',
  'author': 'Marion Zimmer Bradley',
  'position': {'ranking': 562, 'score': 896, 'votes': 11}},
 {'book_id': '1840511',
  'title': 'Snuff',
  'author_id': '2546',
  'author': 'Chuck Palahniuk',
  'position': {'ranking': 563, 'score': 893, 'votes': 10}},
 {'book_id': '761732',
  'title': 'Soul of the Fire',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 564, 'score': 892, 'votes': 11}},
 {'book_id': '5809',
  'title': 'V.',
  'author_id': '235',
  'author': 'Thomas Pynchon',
  'position': {'ranking': 565, 'score': 889, 'votes': 10}},
 {'book_id': '19747756',
  'title': 'House',
  'author_id': '5544',
  'author': 'Frank E. Peretti',
  'position': {'ranking': 566, 'score': 888, 'votes': 10}},
 {'book_id': '231',
  'title': 'I am Charlotte Simmons',
  'author_id': '3083854',
  'author': 'Tom Wolfe',
  'position': {'ranking': 567, 'score': 884, 'votes': 11}},
 {'book_id': '84981',
  'title': 'Tuck Everlasting',
  'author_id': '1954',
  'author': 'Natalie Babbitt',
  'position': {'ranking': 568, 'score': 876, 'votes': 11}},
 {'book_id': '4934',
  'title': 'The Brothers Karamazov',
  'author_id': '3137322',
  'author': 'Fyodor Dostoyevsky',
  'position': {'ranking': 569, 'score': 874, 'votes': 10}},
 {'book_id': '1400307',
  'title': 'Visits from the Afterlife: The Truth About Hauntings, Spirits, and Reunions with Lost Loved Ones',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 570, 'score': 859, 'votes': 17}},
 {'book_id': '7332',
  'title': 'The Silmarillion',
  'author_id': '656983',
  'author': 'J.R.R. Tolkien',
  'position': {'ranking': 571, 'score': 857, 'votes': 11}},
 {'book_id': '122756',
  'title': 'My Brother Sam Is Dead',
  'author_id': '51289',
  'author': 'James Lincoln Collier',
  'position': {'ranking': 572, 'score': 857, 'votes': 10}},
 {'book_id': '41193',
  'title': 'A Thousand Acres',
  'author_id': '1339',
  'author': 'Jane Smiley',
  'position': {'ranking': 573, 'score': 855, 'votes': 9}},
 {'book_id': '526764',
  'title': 'Dreams of the Ringed Vale',
  'author_id': '291916',
  'author': 'Robert Fanney',
  'position': {'ranking': 574, 'score': 853, 'votes': 9}},
 {'book_id': '42156',
  'title': 'Something Borrowed',
  'author_id': '13370',
  'author': 'Emily Giffin',
  'position': {'ranking': 575, 'score': 851, 'votes': 9}},
 {'book_id': '11588',
  'title': 'The Shining',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 576, 'score': 848, 'votes': 10}},
 {'book_id': '30271',
  'title': 'Incubus Dreams',
  'author_id': '9550',
  'author': 'Laurell K. Hamilton',
  'position': {'ranking': 577, 'score': 844, 'votes': 10}},
 {'book_id': '402013',
  'title': 'Angus, Thongs and Full-Frontal Snogging',
  'author_id': '65189',
  'author': 'Louise Rennison',
  'position': {'ranking': 578, 'score': 842, 'votes': 10}},
 {'book_id': '2508164',
  'title': 'Ghostgirl',
  'author_id': '1112218',
  'author': 'Tonya Hurley',
  'position': {'ranking': 579, 'score': 837, 'votes': 9}},
 {'book_id': '22557520',
  'title': 'After',
  'author_id': '3927354',
  'author': 'Anna Todd',
  'position': {'ranking': 580, 'score': 837, 'votes': 9}},
 {'book_id': '99561',
  'title': 'Looking for Alaska',
  'author_id': '1406384',
  'author': 'John Green',
  'position': {'ranking': 581, 'score': 835, 'votes': 11}},
 {'book_id': '48855',
  'title': 'The Diary of a Young Girl',
  'author_id': '3720',
  'author': 'Anne Frank',
  'position': {'ranking': 582, 'score': 833, 'votes': 11}},
 {'book_id': '3388',
  'title': "Corelli's Mandolin",
  'author_id': '2313',
  'author': 'Louis de Bernières',
  'position': {'ranking': 583, 'score': 830, 'votes': 11}},
 {'book_id': '7896527',
  'title': 'Throne of Glass',
  'author_id': '3433047',
  'author': 'Sarah J. Maas',
  'position': {'ranking': 584, 'score': 828, 'votes': 9}},
 {'book_id': '46777',
  'title': 'Tithe',
  'author_id': '25422',
  'author': 'Holly Black',
  'position': {'ranking': 585, 'score': 827, 'votes': 9}},
 {'book_id': '15926',
  'title': 'Nights in Rodanthe',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 586, 'score': 822, 'votes': 9}},
 {'book_id': '103610',
  'title': 'The Prayer of Jabez:  Breaking Through to the Blessed Life',
  'author_id': '3035771',
  'author': 'Bruce H. Wilkinson',
  'position': {'ranking': 587, 'score': 813, 'votes': 11}},
 {'book_id': '15858',
  'title': 'Mirror Mirror',
  'author_id': '7025',
  'author': 'Gregory Maguire',
  'position': {'ranking': 588, 'score': 802, 'votes': 9}},
 {'book_id': '83223',
  'title': 'The Surrendered Wife: A Practical Guide To Finding Intimacy, Passion and Peace',
  'author_id': '47557',
  'author': 'Laura Doyle',
  'position': {'ranking': 589, 'score': 792, 'votes': 12}},
 {'book_id': '9395215',
  'title': 'Everlasting',
  'author_id': '200317',
  'author': 'Alyson Noel',
  'position': {'ranking': 590, 'score': 790, 'votes': 10}},
 {'book_id': '30228',
  'title': 'Micah',
  'author_id': '9550',
  'author': 'Laurell K. Hamilton',
  'position': {'ranking': 591, 'score': 786, 'votes': 9}},
 {'book_id': '32650',
  'title': 'The Return of the Native',
  'author_id': '15905',
  'author': 'Thomas Hardy',
  'position': {'ranking': 592, 'score': 785, 'votes': 9}},
 {'book_id': '7739934',
  'title': 'Night Star',
  'author_id': '200317',
  'author': 'Alyson Noel',
  'position': {'ranking': 593, 'score': 785, 'votes': 10}},
 {'book_id': '530270',
  'title': 'The Turner Diaries',
  'author_id': '340091',
  'author': 'William Luther Pierce',
  'position': {'ranking': 594, 'score': 780, 'votes': 10}},
 {'book_id': '239148',
  'title': 'Find It, Fix It, Flip It!: Make Millions in Real Estate - One House at a Time',
  'author_id': '10878',
  'author': 'Michael Corbett',
  'position': {'ranking': 595, 'score': 779, 'votes': 12}},
 {'book_id': '307791',
  'title': 'The City of Ember',
  'author_id': '2347',
  'author': 'Jeanne DuPrau',
  'position': {'ranking': 596, 'score': 779, 'votes': 9}},
 {'book_id': '9969571',
  'title': 'Ready Player One',
  'author_id': '31712',
  'author': 'Ernest Cline',
  'position': {'ranking': 597, 'score': 779, 'votes': 8}},
 {'book_id': '106085',
  'title': 'Masquerade',
  'author_id': '21911',
  'author': 'Melissa de la Cruz',
  'position': {'ranking': 598, 'score': 777, 'votes': 9}},
 {'book_id': '5639869',
  'title': 'أوتار الماء',
  'author_id': '1468802',
  'author': 'محمد المخزنجي',
  'position': {'ranking': 599, 'score': 776, 'votes': 8}},
 {'book_id': '2526',
  'title': 'Blindness',
  'author_id': '1285555',
  'author': 'José Saramago',
  'position': {'ranking': 600, 'score': 773, 'votes': 10}},
 {'book_id': '1232',
  'title': 'The Shadow of the Wind',
  'author_id': '815',
  'author': 'Carlos Ruiz Zafón',
  'position': {'ranking': 601, 'score': 772, 'votes': 8}},
 {'book_id': '10412',
  'title': "He's Just Not That Into You: The No-Excuses Truth to Understanding Guys",
  'author_id': '6842',
  'author': 'Greg Behrendt',
  'position': {'ranking': 602, 'score': 767, 'votes': 12}},
 {'book_id': '234184',
  'title': 'Stone of Tears',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 603, 'score': 766, 'votes': 11}},
 {'book_id': '2321296',
  'title': 'Ink Exchange',
  'author_id': '175855',
  'author': 'Melissa Marr',
  'position': {'ranking': 604, 'score': 766, 'votes': 8}},
 {'book_id': '646462',
  'title': 'القرآن الكريم',
  'author_id': '5158478',
  'author': 'Anonymous',
  'position': {'ranking': 605, 'score': 766, 'votes': 8}},
 {'book_id': '227941',
  'title': 'Jemima J',
  'author_id': '12915',
  'author': 'Jane Green',
  'position': {'ranking': 606, 'score': 764, 'votes': 8}},
 {'book_id': '3463',
  'title': 'A Bend in the Road',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 607, 'score': 759, 'votes': 12}},
 {'book_id': '124509',
  'title': "Smilla's Sense of Snow",
  'author_id': '369288',
  'author': 'Peter Høeg',
  'position': {'ranking': 608, 'score': 759, 'votes': 8}},
 {'book_id': '264',
  'title': 'The Portrait of a Lady',
  'author_id': '159',
  'author': 'Henry James',
  'position': {'ranking': 609, 'score': 758, 'votes': 8}},
 {'book_id': '259693',
  'title': 'Stuck in Neutral',
  'author_id': '151783',
  'author': 'Terry Trueman',
  'position': {'ranking': 610, 'score': 755, 'votes': 8}},
 {'book_id': '212474',
  'title': 'The Egyptologist',
  'author_id': '16223',
  'author': 'Arthur Phillips',
  'position': {'ranking': 611, 'score': 753, 'votes': 7}},
 {'book_id': '162085',
  'title': 'Pretty Little Liars',
  'author_id': '93970',
  'author': 'Sara Shepard',
  'position': {'ranking': 612, 'score': 752, 'votes': 9}},
 {'book_id': '30597',
  'title': 'The Hunchback of Notre-Dame',
  'author_id': '13661',
  'author': 'Victor Hugo',
  'position': {'ranking': 613, 'score': 748, 'votes': 8}},
 {'book_id': '5038',
  'title': 'The Pillars of Creation',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 614, 'score': 748, 'votes': 9}},
 {'book_id': '2958921',
  'title': 'All Pets Go To Heaven: The Spiritual Lives of the Animals We Love',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 615, 'score': 748, 'votes': 14}},
 {'book_id': '121127',
  'title': 'Faith of the Fallen',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 616, 'score': 744, 'votes': 9}},
 {'book_id': '13139',
  'title': "School's Out—Forever",
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 617, 'score': 740, 'votes': 11}},
 {'book_id': '8664368',
  'title': 'The Finkler Question',
  'author_id': '171414',
  'author': 'Howard Jacobson',
  'position': {'ranking': 618, 'score': 739, 'votes': 8}},
 {'book_id': '7126',
  'title': 'The Count of Monte Cristo',
  'author_id': '4785',
  'author': 'Alexandre Dumas',
  'position': {'ranking': 619, 'score': 738, 'votes': 9}},
 {'book_id': '15622',
  'title': 'Native Son',
  'author_id': '9657',
  'author': 'Richard Wright',
  'position': {'ranking': 620, 'score': 732, 'votes': 8}},
 {'book_id': '12873',
  'title': 'Rebecca',
  'author_id': '2001717',
  'author': 'Daphne du Maurier',
  'position': {'ranking': 621, 'score': 731, 'votes': 8}},
 {'book_id': '28881',
  'title': "Lamb: The Gospel According to Biff, Christ's Childhood Pal",
  'author_id': '16218',
  'author': 'Christopher Moore',
  'position': {'ranking': 622, 'score': 727, 'votes': 8}},
 {'book_id': '73186',
  'title': 'The Case for Christ',
  'author_id': '639',
  'author': 'Lee Strobel',
  'position': {'ranking': 623, 'score': 722, 'votes': 12}},
 {'book_id': '24580',
  'title': 'The Adventures of Tom Sawyer and Adventures of Huckleberry Finn',
  'author_id': '1244',
  'author': 'Mark Twain',
  'position': {'ranking': 624, 'score': 720, 'votes': 9}},
 {'book_id': '12716010',
  'title': 'Rapture',
  'author_id': '2905297',
  'author': 'Lauren Kate',
  'position': {'ranking': 625, 'score': 719, 'votes': 8}},
 {'book_id': '6390',
  'title': 'Exploring the Levels of Creation',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 626, 'score': 718, 'votes': 11}},
 {'book_id': '30324',
  'title': 'Blood and Chocolate',
  'author_id': '5833',
  'author': 'Annette Curtis Klause',
  'position': {'ranking': 627, 'score': 715, 'votes': 8}},
 {'book_id': '6251390',
  'title': "You Can Lead an Atheist to Evidence, But You Can't Make Him Think: Answers to Questions from Angry Skeptics",
  'author_id': '8662',
  'author': 'Ray Comfort',
  'position': {'ranking': 628, 'score': 713, 'votes': 12}},
 {'book_id': '5356',
  'title': 'The King of Torts',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 629, 'score': 710, 'votes': 8}},
 {'book_id': '3950967',
  'title': 'The Tales of Beedle the Bard',
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 630, 'score': 710, 'votes': 8}},
 {'book_id': '266384',
  'title': "If Democrats Had Any Brains, They'd Be Republicans",
  'author_id': '2761',
  'author': 'Ann Coulter',
  'position': {'ranking': 631, 'score': 708, 'votes': 13}},
 {'book_id': '6654313',
  'title': 'Linger',
  'author_id': '1330292',
  'author': 'Maggie Stiefvater',
  'position': {'ranking': 632, 'score': 704, 'votes': 8}},
 {'book_id': '12497',
  'title': 'No Country for Old Men',
  'author_id': '4178',
  'author': 'Cormac McCarthy',
  'position': {'ranking': 633, 'score': 702, 'votes': 9}},
 {'book_id': '6310',
  'title': 'Charlie and the Chocolate Factory',
  'author_id': '4273',
  'author': 'Roald Dahl',
  'position': {'ranking': 634, 'score': 699, 'votes': 9}},
 {'book_id': '68591',
  'title': 'Brida',
  'author_id': '566',
  'author': 'Paulo Coelho',
  'position': {'ranking': 635, 'score': 699, 'votes': 9}},
 {'book_id': '153008',
  'title': "Kushiel's Dart",
  'author_id': '9237',
  'author': 'Jacqueline Carey',
  'position': {'ranking': 636, 'score': 697, 'votes': 8}},
 {'book_id': '17020',
  'title': '13 Little Blue Envelopes',
  'author_id': '10317',
  'author': 'Maureen Johnson',
  'position': {'ranking': 637, 'score': 695, 'votes': 8}},
 {'book_id': '489468',
  'title': 'Pokémon Top 10 Handbook',
  'author_id': '17719',
  'author': 'Tracey West',
  'position': {'ranking': 638, 'score': 689, 'votes': 11}},
 {'book_id': '4929',
  'title': 'Kafka on the Shore',
  'author_id': '3354',
  'author': 'Haruki Murakami',
  'position': {'ranking': 639, 'score': 682, 'votes': 7}},
 {'book_id': '353016',
  'title': 'Tantalize',
  'author_id': '202438',
  'author': 'Cynthia Leitich Smith',
  'position': {'ranking': 640, 'score': 682, 'votes': 7}},
 {'book_id': '45195',
  'title': 'A Passage to India',
  'author_id': '86404',
  'author': 'E.M. Forster',
  'position': {'ranking': 641, 'score': 681, 'votes': 8}},
 {'book_id': '2914683',
  'title': 'Feuchtgebiete',
  'author_id': '880630',
  'author': 'Charlotte Roche',
  'position': {'ranking': 642, 'score': 680, 'votes': 7}},
 {'book_id': '7982567',
  'title': 'عشاء برفقة عائشة',
  'author_id': '2499187',
  'author': 'محمد المنسي قنديل',
  'position': {'ranking': 643, 'score': 680, 'votes': 7}},
 {'book_id': '66717',
  'title': 'I, Lucifer',
  'author_id': '37613',
  'author': 'Glen Duncan',
  'position': {'ranking': 644, 'score': 679, 'votes': 9}},
 {'book_id': '10031702',
  'title': 'The Nicole Snooki Polizzi Handbook - Everything You Need to Know about Snooki',
  'author_id': '4536951',
  'author': 'Iris Damico',
  'position': {'ranking': 645, 'score': 677, 'votes': 10}},
 {'book_id': '13214',
  'title': 'I Know Why the Caged Bird Sings',
  'author_id': '3503',
  'author': 'Maya Angelou',
  'position': {'ranking': 646, 'score': 673, 'votes': 9}},
 {'book_id': '28001',
  'title': 'Accordion Crimes',
  'author_id': '1262010',
  'author': 'Annie Proulx',
  'position': {'ranking': 647, 'score': 671, 'votes': 7}},
 {'book_id': '2998',
  'title': 'The Secret Garden',
  'author_id': '2041',
  'author': 'Frances Hodgson Burnett',
  'position': {'ranking': 648, 'score': 669, 'votes': 8}},
 {'book_id': '101299',
  'title': 'The Reader',
  'author_id': '2894',
  'author': 'Bernhard Schlink',
  'position': {'ranking': 649, 'score': 666, 'votes': 7}},
 {'book_id': '10605',
  'title': 'Thinner',
  'author_id': '5858',
  'author': 'Richard Bachman',
  'position': {'ranking': 650, 'score': 664, 'votes': 9}},
 {'book_id': '22076',
  'title': 'From a Buick 8',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 651, 'score': 664, 'votes': 8}},
 {'book_id': '28078',
  'title': 'The Birth of Venus',
  'author_id': '15830',
  'author': 'Sarah Dunant',
  'position': {'ranking': 652, 'score': 663, 'votes': 7}},
 {'book_id': '7905092',
  'title': 'Freedom',
  'author_id': '2578',
  'author': 'Jonathan Franzen',
  'position': {'ranking': 653, 'score': 663, 'votes': 9}},
 {'book_id': '5064',
  'title': 'World Without End',
  'author_id': '3447',
  'author': 'Ken Follett',
  'position': {'ranking': 654, 'score': 662, 'votes': 8}},
 {'book_id': '21996',
  'title': 'The Devil in the White City',
  'author_id': '5869',
  'author': 'Erik Larson',
  'position': {'ranking': 655, 'score': 661, 'votes': 7}},
 {'book_id': '6400090',
  'title': 'The Last Song',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 656, 'score': 660, 'votes': 8}},
 {'book_id': '2115',
  'title': 'Atlas Shrugged & The Fountainhead',
  'author_id': '432',
  'author': 'Ayn Rand',
  'position': {'ranking': 657, 'score': 659, 'votes': 10}},
 {'book_id': '4758093',
  'title': 'L.A. Candy',
  'author_id': '1980985',
  'author': 'Lauren Conrad',
  'position': {'ranking': 658, 'score': 658, 'votes': 8}},
 {'book_id': '160458',
  'title': 'Pokemon Graphic Novel, Volume 1: The Electric Tale Of Pikachu!',
  'author_id': '93060',
  'author': 'Toshihiro Ono',
  'position': {'ranking': 659, 'score': 656, 'votes': 10}},
 {'book_id': '1055617',
  'title': 'The Miracle of Forgiveness',
  'author_id': '193170',
  'author': 'Spencer W. Kimball',
  'position': {'ranking': 660, 'score': 655, 'votes': 7}},
 {'book_id': '7677',
  'title': 'Jurassic Park',
  'author_id': '5194',
  'author': 'Michael Crichton',
  'position': {'ranking': 661, 'score': 653, 'votes': 10}},
 {'book_id': '6392',
  'title': 'Father God: Co-creator to Mother God',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 662, 'score': 651, 'votes': 13}},
 {'book_id': '88634',
  'title': 'Liberal Fascism: The Secret History of the American Left from Mussolini to the Politics of Meaning',
  'author_id': '50989',
  'author': 'Jonah Goldberg',
  'position': {'ranking': 663, 'score': 651, 'votes': 9}},
 {'book_id': '40102',
  'title': 'Blink: The Power of Thinking Without Thinking',
  'author_id': '1439',
  'author': 'Malcolm Gladwell',
  'position': {'ranking': 664, 'score': 649, 'votes': 7}},
 {'book_id': '5187',
  'title': 'The Book of Ruth',
  'author_id': '3526',
  'author': 'Jane Hamilton',
  'position': {'ranking': 665, 'score': 648, 'votes': 7}},
 {'book_id': '9375',
  'title': 'Fried Green Tomatoes at the Whistle Stop Cafe',
  'author_id': '6125',
  'author': 'Fannie Flagg',
  'position': {'ranking': 666, 'score': 639, 'votes': 9}},
 {'book_id': '6917952',
  'title': 'Burned',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 667, 'score': 637, 'votes': 8}},
 {'book_id': '1852',
  'title': 'The Call of the Wild',
  'author_id': '1240',
  'author': 'Jack London',
  'position': {'ranking': 668, 'score': 635, 'votes': 7}},
 {'book_id': '998133',
  'title': 'The Gathering',
  'author_id': '52832',
  'author': 'Anne Enright',
  'position': {'ranking': 669, 'score': 634, 'votes': 8}},
 {'book_id': '443540',
  'title': 'All He Ever Wanted',
  'author_id': '3530',
  'author': 'Anita Shreve',
  'position': {'ranking': 670, 'score': 632, 'votes': 7}},
 {'book_id': '2536134',
  'title': 'Gone',
  'author_id': '1599723',
  'author': 'Michael  Grant',
  'position': {'ranking': 671, 'score': 629, 'votes': 7}},
 {'book_id': '10916',
  'title': 'The Pact',
  'author_id': '7128',
  'author': 'Jodi Picoult',
  'position': {'ranking': 672, 'score': 627, 'votes': 7}},
 {'book_id': '13529',
  'title': 'March',
  'author_id': '211268',
  'author': 'Geraldine Brooks',
  'position': {'ranking': 673, 'score': 627, 'votes': 7}},
 {'book_id': '6395',
  'title': "Sylvia Browne's Book of Dreams",
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 674, 'score': 627, 'votes': 11}},
 {'book_id': '5834059',
  'title': "Spanking-A Loving Discipline: Helpful and Practical Answers for Today's Parents",
  'author_id': '376074',
  'author': 'Roy Lessin',
  'position': {'ranking': 675, 'score': 626, 'votes': 8}},
 {'book_id': '1599063',
  'title': 'Woman Power: Transform Your Man, Your Marriage, Your Life',
  'author_id': '6519027',
  'author': 'Laura Schlessinger',
  'position': {'ranking': 676, 'score': 623, 'votes': 11}},
 {'book_id': '496670',
  'title': 'Star',
  'author_id': '91259',
  'author': 'Pamela Anderson',
  'position': {'ranking': 677, 'score': 619, 'votes': 9}},
 {'book_id': '5198',
  'title': 'Paradise',
  'author_id': '3534',
  'author': 'Toni Morrison',
  'position': {'ranking': 678, 'score': 619, 'votes': 7}},
 {'book_id': '10596',
  'title': 'The Regulators',
  'author_id': '5858',
  'author': 'Richard Bachman',
  'position': {'ranking': 679, 'score': 619, 'votes': 7}},
 {'book_id': '8726744',
  'title': 'The Twilight Saga Complete Collection',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 680, 'score': 618, 'votes': 8}},
 {'book_id': '71332',
  'title': 'Push',
  'author_id': '5021508',
  'author': 'Sapphire',
  'position': {'ranking': 681, 'score': 612, 'votes': 7}},
 {'book_id': '5056084',
  'title': 'Wings',
  'author_id': '2096360',
  'author': 'Aprilynne Pike',
  'position': {'ranking': 682, 'score': 609, 'votes': 7}},
 {'book_id': '76139',
  'title': 'Son of Rosemary',
  'author_id': '8050',
  'author': 'Ira Levin',
  'position': {'ranking': 683, 'score': 607, 'votes': 8}},
 {'book_id': '1419286',
  'title': 'The Protocols of the Learned Elders of Zion',
  'author_id': '11103690',
  'author': 'Matvei Vasilyevich Golovinski',
  'position': {'ranking': 684, 'score': 605, 'votes': 9}},
 {'book_id': '19543',
  'title': 'Where the Wild Things Are',
  'author_id': '4489',
  'author': 'Maurice Sendak',
  'position': {'ranking': 685, 'score': 603, 'votes': 7}},
 {'book_id': '24731',
  'title': 'The Tortilla Curtain',
  'author_id': '1064072',
  'author': 'T. Coraghessan Boyle',
  'position': {'ranking': 686, 'score': 594, 'votes': 6}},
 {'book_id': '16248068',
  'title': 'The Elite',
  'author_id': '2987125',
  'author': 'Kiera Cass',
  'position': {'ranking': 687, 'score': 594, 'votes': 7}},
 {'book_id': '39843829',
  'title': 'على حين وطن - قصص قصيرة جدا',
  'author_id': '17940595',
  'author': 'محمد ابراهيم نوايا',
  'position': {'ranking': 688, 'score': 594, 'votes': 6}},
 {'book_id': '39844304',
  'title': 'ان تمشي على يديك',
  'author_id': '17940595',
  'author': 'محمد ابراهيم نوايا',
  'position': {'ranking': 689, 'score': 594, 'votes': 6}},
 {'book_id': '1333713',
  'title': 'Obama: From Promise to Power',
  'author_id': '636139',
  'author': 'David Mendell',
  'position': {'ranking': 690, 'score': 593, 'votes': 9}},
 {'book_id': '48511504',
  'title': 'ذاكرة معدن',
  'author_id': '17940595',
  'author': 'محمد ابراهيم نوايا',
  'position': {'ranking': 691, 'score': 593, 'votes': 6}},
 {'book_id': '10583',
  'title': 'Pet Sematary',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 692, 'score': 592, 'votes': 8}},
 {'book_id': '24178',
  'title': "Charlotte's Web",
  'author_id': '988142',
  'author': 'E.B. White',
  'position': {'ranking': 693, 'score': 591, 'votes': 9}},
 {'book_id': '493456',
  'title': 'Extras',
  'author_id': '13957',
  'author': 'Scott Westerfeld',
  'position': {'ranking': 694, 'score': 591, 'votes': 7}},
 {'book_id': '601773',
  'title': "The Sylvia Browne Book Collection: Boxed Set Includes Sylvia Browne's Book of Angels, If You Could See What I See, and Secrets  Mysteries of the World",
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 695, 'score': 591, 'votes': 10}},
 {'book_id': '5360',
  'title': 'A Painted House',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 696, 'score': 590, 'votes': 7}},
 {'book_id': '439288',
  'title': 'Speak',
  'author_id': '10003',
  'author': 'Laurie Halse Anderson',
  'position': {'ranking': 697, 'score': 590, 'votes': 6}},
 {'book_id': '1427',
  'title': 'The Zahir',
  'author_id': '566',
  'author': 'Paulo Coelho',
  'position': {'ranking': 698, 'score': 588, 'votes': 7}},
 {'book_id': '29346729',
  'title': 'فن التخلي',
  'author_id': '15038626',
  'author': 'عبدالله ناصر',
  'position': {'ranking': 699, 'score': 588, 'votes': 6}},
 {'book_id': '169756',
  'title': 'Feed',
  'author_id': '31688',
  'author': 'M.T. Anderson',
  'position': {'ranking': 700, 'score': 587, 'votes': 6}},
 {'book_id': '253058',
  'title': 'Temple of the Winds',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 701, 'score': 587, 'votes': 9}},
 {'book_id': '3548409',
  'title': "The Case Against Barack Obama: The Unlikely Rise and Unexamined Agenda of the Media's Favorite Candidate",
  'author_id': '1500962',
  'author': 'David Freddoso',
  'position': {'ranking': 702, 'score': 584, 'votes': 10}},
 {'book_id': '8235178',
  'title': 'Across the Universe',
  'author_id': '4018722',
  'author': 'Beth Revis',
  'position': {'ranking': 703, 'score': 582, 'votes': 6}},
 {'book_id': '7171637',
  'title': 'Clockwork Angel',
  'author_id': '150038',
  'author': 'Cassandra Clare',
  'position': {'ranking': 704, 'score': 582, 'votes': 8}},
 {'book_id': '6256512',
  'title': 'Crystal Moon',
  'author_id': '2845655',
  'author': 'Phillip E. Jones',
  'position': {'ranking': 705, 'score': 581, 'votes': 6}},
 {'book_id': '89691',
  'title': 'The Dogs of Babel',
  'author_id': '34061',
  'author': 'Carolyn Parkhurst',
  'position': {'ranking': 706, 'score': 579, 'votes': 6}},
 {'book_id': '29547',
  'title': 'Everyone Worth Knowing',
  'author_id': '3490',
  'author': 'Lauren Weisberger',
  'position': {'ranking': 707, 'score': 579, 'votes': 6}},
 {'book_id': '38709',
  'title': 'Holes',
  'author_id': '6569',
  'author': 'Louis Sachar',
  'position': {'ranking': 708, 'score': 579, 'votes': 7}},
 {'book_id': '5351',
  'title': 'The Street Lawyer',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 709, 'score': 578, 'votes': 7}},
 {'book_id': '5060378',
  'title': 'The Girl Who Played with Fire',
  'author_id': '706255',
  'author': 'Stieg Larsson',
  'position': {'ranking': 710, 'score': 578, 'votes': 7}},
 {'book_id': '9349915',
  'title': 'Red Riding Hood',
  'author_id': '4366471',
  'author': 'Sarah Blakley-Cartwright',
  'position': {'ranking': 711, 'score': 578, 'votes': 6}},
 {'book_id': '6613956',
  'title': 'The Solitude of Prime Numbers',
  'author_id': '493232',
  'author': 'Paolo Giordano',
  'position': {'ranking': 712, 'score': 577, 'votes': 6}},
 {'book_id': '5159',
  'title': 'Here on Earth',
  'author_id': '3502',
  'author': 'Alice Hoffman',
  'position': {'ranking': 713, 'score': 577, 'votes': 6}},
 {'book_id': '7631105',
  'title': 'The Scorch Trials',
  'author_id': '348878',
  'author': 'James Dashner',
  'position': {'ranking': 714, 'score': 577, 'votes': 6}},
 {'book_id': '23434061',
  'title': 'The Bone Labyrinth',
  'author_id': '38809',
  'author': 'James Rollins',
  'position': {'ranking': 715, 'score': 577, 'votes': 6}},
 {'book_id': '27126',
  'title': 'Bitter Is the New Black: Confessions of a Condescending, Egomaniacal, Self-Centered Smartass, Or, Why You Should Never Carry A Prada Bag to the Unemployment Office',
  'author_id': '14577',
  'author': 'Jen Lancaster',
  'position': {'ranking': 716, 'score': 574, 'votes': 7}},
 {'book_id': '4004',
  'title': 'The Pilgrimage',
  'author_id': '566',
  'author': 'Paulo Coelho',
  'position': {'ranking': 717, 'score': 573, 'votes': 8}},
 {'book_id': '5326',
  'title': 'A Christmas Carol',
  'author_id': '239579',
  'author': 'Charles Dickens',
  'position': {'ranking': 718, 'score': 572, 'votes': 8}},
 {'book_id': '1617',
  'title': 'Night',
  'author_id': '1049',
  'author': 'Elie Wiesel',
  'position': {'ranking': 719, 'score': 571, 'votes': 8}},
 {'book_id': '33676',
  'title': 'Saving the World and Other Extreme Sports',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 720, 'score': 570, 'votes': 8}},
 {'book_id': '769483',
  'title': 'Magyk',
  'author_id': '157663',
  'author': 'Angie Sage',
  'position': {'ranking': 721, 'score': 569, 'votes': 6}},
 {'book_id': '7857195',
  'title': 'Squirrel Seeks Chipmunk',
  'author_id': '2849',
  'author': 'David Sedaris',
  'position': {'ranking': 722, 'score': 568, 'votes': 6}},
 {'book_id': '6320534',
  'title': 'Under the Dome',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 723, 'score': 568, 'votes': 7}},
 {'book_id': '12700353',
  'title': 'Me and Earl and the Dying Girl',
  'author_id': '5227163',
  'author': 'Jesse Andrews',
  'position': {'ranking': 724, 'score': 565, 'votes': 6}},
 {'book_id': '5759',
  'title': 'Fight Club',
  'author_id': '2546',
  'author': 'Chuck Palahniuk',
  'position': {'ranking': 725, 'score': 562, 'votes': 8}},
 {'book_id': '5890',
  'title': 'The Woman in White',
  'author_id': '4012',
  'author': 'Wilkie Collins',
  'position': {'ranking': 726, 'score': 562, 'votes': 6}},
 {'book_id': '4374400',
  'title': 'If I Stay',
  'author_id': '295178',
  'author': 'Gayle Forman',
  'position': {'ranking': 727, 'score': 562, 'votes': 6}},
 {'book_id': '49750',
  'title': 'An Abundance of Katherines',
  'author_id': '1406384',
  'author': 'John Green',
  'position': {'ranking': 728, 'score': 559, 'votes': 6}},
 {'book_id': '9460487',
  'title': "Miss Peregrine's Home for Peculiar Children",
  'author_id': '3046613',
  'author': 'Ransom Riggs',
  'position': {'ranking': 729, 'score': 558, 'votes': 8}},
 {'book_id': '24768',
  'title': 'Pretties',
  'author_id': '13957',
  'author': 'Scott Westerfeld',
  'position': {'ranking': 730, 'score': 557, 'votes': 6}},
 {'book_id': '14995',
  'title': 'Odd Thomas',
  'author_id': '9355',
  'author': 'Dean Koontz',
  'position': {'ranking': 731, 'score': 557, 'votes': 7}},
 {'book_id': '24765',
  'title': 'Specials',
  'author_id': '13957',
  'author': 'Scott Westerfeld',
  'position': {'ranking': 732, 'score': 556, 'votes': 6}},
 {'book_id': '30281',
  'title': 'Guilty Pleasures',
  'author_id': '9550',
  'author': 'Laurell K. Hamilton',
  'position': {'ranking': 733, 'score': 556, 'votes': 6}},
 {'book_id': '2218656',
  'title': 'The South Beach Diet Supercharged: Faster Weight Loss and Better Health for Life',
  'author_id': '2664',
  'author': 'Arthur Agatston',
  'position': {'ranking': 734, 'score': 554, 'votes': 8}},
 {'book_id': '186074',
  'title': 'The Name of the Wind',
  'author_id': '108424',
  'author': 'Patrick Rothfuss',
  'position': {'ranking': 735, 'score': 554, 'votes': 6}},
 {'book_id': '16527',
  'title': 'Daughter of Fortune',
  'author_id': '2238',
  'author': 'Isabel Allende',
  'position': {'ranking': 736, 'score': 552, 'votes': 7}},
 {'book_id': '11275',
  'title': 'The Wind-Up Bird Chronicle',
  'author_id': '3354',
  'author': 'Haruki Murakami',
  'position': {'ranking': 737, 'score': 552, 'votes': 6}},
 {'book_id': '59839',
  'title': 'Special Delivery',
  'author_id': '14255',
  'author': 'Danielle Steel',
  'position': {'ranking': 738, 'score': 551, 'votes': 9}},
 {'book_id': '4530',
  'title': 'Olivia Joules and the Overactive Imagination',
  'author_id': '3090',
  'author': 'Helen Fielding',
  'position': {'ranking': 739, 'score': 551, 'votes': 6}},
 {'book_id': '337058',
  'title': 'Jacob Have I Loved',
  'author_id': '1949',
  'author': 'Katherine Paterson',
  'position': {'ranking': 740, 'score': 549, 'votes': 6}},
 {'book_id': '7664041',
  'title': 'Inheritance',
  'author_id': '8349',
  'author': 'Christopher Paolini',
  'position': {'ranking': 741, 'score': 543, 'votes': 6}},
 {'book_id': '41219',
  'title': 'Possession',
  'author_id': '1169504',
  'author': 'A.S. Byatt',
  'position': {'ranking': 742, 'score': 543, 'votes': 8}},
 {'book_id': '17333223',
  'title': 'The Goldfinch',
  'author_id': '8719',
  'author': 'Donna Tartt',
  'position': {'ranking': 743, 'score': 541, 'votes': 6}},
 {'book_id': '604803',
  'title': 'Confessor',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 744, 'score': 539, 'votes': 7}},
 {'book_id': '331319',
  'title': 'An American Tragedy',
  'author_id': '8987',
  'author': 'Theodore Dreiser',
  'position': {'ranking': 745, 'score': 539, 'votes': 6}},
 {'book_id': '5215879',
  'title': 'Skin Trade',
  'author_id': '9550',
  'author': 'Laurell K. Hamilton',
  'position': {'ranking': 746, 'score': 538, 'votes': 6}},
 {'book_id': '1609451',
  'title': 'Change of Heart',
  'author_id': '7128',
  'author': 'Jodi Picoult',
  'position': {'ranking': 747, 'score': 538, 'votes': 6}},
 {'book_id': '129579',
  'title': "Annie Freeman's Fabulous Traveling Funeral",
  'author_id': '49417',
  'author': 'Kris Radish',
  'position': {'ranking': 748, 'score': 536, 'votes': 6}},
 {'book_id': '10566',
  'title': "Lisey's Story",
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 749, 'score': 534, 'votes': 6}},
 {'book_id': '17402605',
  'title': 'The Alchemyst',
  'author_id': '27100',
  'author': 'Michael Scott',
  'position': {'ranking': 750, 'score': 534, 'votes': 6}},
 {'book_id': '248483',
  'title': 'Austenland',
  'author_id': '49177',
  'author': 'Shannon Hale',
  'position': {'ranking': 751, 'score': 533, 'votes': 6}},
 {'book_id': '53496',
  'title': 'Walk Two Moons',
  'author_id': '11633',
  'author': 'Sharon Creech',
  'position': {'ranking': 752, 'score': 531, 'votes': 6}},
 {'book_id': '12751687',
  'title': 'Finale',
  'author_id': '2876763',
  'author': 'Becca Fitzpatrick',
  'position': {'ranking': 753, 'score': 531, 'votes': 6}},
 {'book_id': '13872',
  'title': 'Geek Love',
  'author_id': '8622',
  'author': 'Katherine Dunn',
  'position': {'ranking': 754, 'score': 530, 'votes': 6}},
 {'book_id': '11946245',
  'title': 'Nevermore',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 755, 'score': 530, 'votes': 6}},
 {'book_id': '7201913',
  'title': 'Angel',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 756, 'score': 529, 'votes': 6}},
 {'book_id': '11711',
  'title': 'Vernon God Little',
  'author_id': '7471',
  'author': 'D.B.C. Pierre',
  'position': {'ranking': 757, 'score': 527, 'votes': 7}},
 {'book_id': '8652190',
  'title': 'Awakened',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 758, 'score': 527, 'votes': 6}},
 {'book_id': '3464',
  'title': 'True Believer',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 759, 'score': 525, 'votes': 6}},
 {'book_id': '7171856',
  'title': 'The Puppet Masters',
  'author_id': '205',
  'author': 'Robert A. Heinlein',
  'position': {'ranking': 760, 'score': 523, 'votes': 6}},
 {'book_id': '54487',
  'title': 'Contacting Your Spirit Guide',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 761, 'score': 521, 'votes': 9}},
 {'book_id': '23580',
  'title': 'Oh, the Things I Know!: A Guide to Success, Or, Failing That, Happiness',
  'author_id': '13311',
  'author': 'Al Franken',
  'position': {'ranking': 762, 'score': 519, 'votes': 7}},
 {'book_id': '6690798',
  'title': 'The Passage',
  'author_id': '45315',
  'author': 'Justin Cronin',
  'position': {'ranking': 763, 'score': 517, 'votes': 6}},
 {'book_id': '22463',
  'title': 'The Origin of Species',
  'author_id': '12793',
  'author': 'Charles Darwin',
  'position': {'ranking': 764, 'score': 514, 'votes': 6}},
 {'book_id': '676637',
  'title': 'Michelle Remembers',
  'author_id': '162638',
  'author': 'Michelle Smith',
  'position': {'ranking': 765, 'score': 512, 'votes': 6}},
 {'book_id': '2235597',
  'title': 'The Dangerous Days of Daniel X',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 766, 'score': 511, 'votes': 6}},
 {'book_id': '13145',
  'title': 'Along Came a Spider',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 767, 'score': 509, 'votes': 7}},
 {'book_id': '561402',
  'title': 'It Had to Be You',
  'author_id': '12665',
  'author': 'Cecily von Ziegesar',
  'position': {'ranking': 768, 'score': 506, 'votes': 6}},
 {'book_id': '13148',
  'title': 'Kiss the Girls',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 769, 'score': 506, 'votes': 7}},
 {'book_id': '6412',
  'title': 'Spiritual Connections: How to Find Spirituality Throughout All the Relationships in Your Life',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 770, 'score': 504, 'votes': 8}},
 {'book_id': '43887',
  'title': 'Chainfire',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 771, 'score': 504, 'votes': 6}},
 {'book_id': '8787',
  'title': 'The White Masai',
  'author_id': '5719',
  'author': 'Corinne Hofmann',
  'position': {'ranking': 772, 'score': 504, 'votes': 6}},
 {'book_id': '50398',
  'title': 'Northanger Abbey',
  'author_id': '1265',
  'author': 'Jane Austen',
  'position': {'ranking': 773, 'score': 501, 'votes': 6}},
 {'book_id': '310146',
  'title': 'The True Confessions of Charlotte Doyle',
  'author_id': '10105',
  'author': 'Avi',
  'position': {'ranking': 774, 'score': 501, 'votes': 6}},
 {'book_id': '815309',
  'title': 'On Chesil Beach',
  'author_id': '2408',
  'author': 'Ian McEwan',
  'position': {'ranking': 775, 'score': 500, 'votes': 6}},
 {'book_id': '1424718',
  'title': 'Conversations with the Other Side',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 776, 'score': 499, 'votes': 9}},
 {'book_id': '59853',
  'title': 'Wings',
  'author_id': '14255',
  'author': 'Danielle Steel',
  'position': {'ranking': 777, 'score': 498, 'votes': 6}},
 {'book_id': '1472878',
  'title': 'Firefly Lane',
  'author_id': '54493',
  'author': 'Kristin Hannah',
  'position': {'ranking': 778, 'score': 496, 'votes': 5}},
 {'book_id': '6413473',
  'title': 'The Betrayal of Natalie Hargrove',
  'author_id': '2905297',
  'author': 'Lauren Kate',
  'position': {'ranking': 779, 'score': 496, 'votes': 5}},
 {'book_id': '6655491',
  'title': 'The War of Mists',
  'author_id': '291916',
  'author': 'Robert Fanney',
  'position': {'ranking': 780, 'score': 495, 'votes': 5}},
 {'book_id': '436806',
  'title': 'Story of the Eye',
  'author_id': '20842',
  'author': 'Georges Bataille',
  'position': {'ranking': 781, 'score': 494, 'votes': 5}},
 {'book_id': '2967752',
  'title': 'The Elegance of the Hedgehog',
  'author_id': '643126',
  'author': 'Muriel Barbery',
  'position': {'ranking': 782, 'score': 494, 'votes': 6}},
 {'book_id': '12527',
  'title': 'Pilgrim at Tinker Creek',
  'author_id': '5209',
  'author': 'Annie Dillard',
  'position': {'ranking': 783, 'score': 493, 'votes': 5}},
 {'book_id': '92147',
  'title': 'Map of Bones',
  'author_id': '38809',
  'author': 'James Rollins',
  'position': {'ranking': 784, 'score': 491, 'votes': 6}},
 {'book_id': '902',
  'title': 'The Westing Game',
  'author_id': '10074',
  'author': 'Ellen Raskin',
  'position': {'ranking': 785, 'score': 490, 'votes': 5}},
 {'book_id': '15398',
  'title': 'The Last Days of Dogtown',
  'author_id': '626222',
  'author': 'Anita Diamant',
  'position': {'ranking': 786, 'score': 490, 'votes': 6}},
 {'book_id': '8318666',
  'title': 'The Land of Painted Caves',
  'author_id': '861',
  'author': 'Jean M. Auel',
  'position': {'ranking': 787, 'score': 490, 'votes': 6}},
 {'book_id': '6934395',
  'title': 'Midnight',
  'author_id': '50873',
  'author': 'L.J. Smith',
  'position': {'ranking': 788, 'score': 490, 'votes': 6}},
 {'book_id': '228261',
  'title': 'Soul Harvest: The World Takes Sides',
  'author_id': '7625163',
  'author': 'Tim LaHaye',
  'position': {'ranking': 789, 'score': 489, 'votes': 7}},
 {'book_id': '44170',
  'title': 'The Looking Glass Wars',
  'author_id': '24818',
  'author': 'Frank Beddor',
  'position': {'ranking': 790, 'score': 489, 'votes': 5}},
 {'book_id': '49628',
  'title': 'Cloud Atlas',
  'author_id': '6538289',
  'author': 'David Mitchell',
  'position': {'ranking': 791, 'score': 489, 'votes': 6}},
 {'book_id': '300650',
  'title': 'On Becoming Baby Wise: Giving Your Infant the Gift of Nighttime Sleep',
  'author_id': '170203',
  'author': 'Gary Ezzo',
  'position': {'ranking': 792, 'score': 488, 'votes': 5}},
 {'book_id': '48328',
  'title': 'Revolutionary Road',
  'author_id': '27069',
  'author': 'Richard Yates',
  'position': {'ranking': 793, 'score': 488, 'votes': 5}},
 {'book_id': '70912',
  'title': 'The Dice Man',
  'author_id': '40098',
  'author': 'Luke Rhinehart',
  'position': {'ranking': 794, 'score': 488, 'votes': 5}},
 {'book_id': '3614107',
  'title': 'لحظات غرق جزيرة الحوت',
  'author_id': '1468802',
  'author': 'محمد المخزنجي',
  'position': {'ranking': 795, 'score': 488, 'votes': 5}},
 {'book_id': '1047759',
  'title': 'How Could You Do That?!: The Abdication of Character, Courage, and Conscience',
  'author_id': '6519027',
  'author': 'Laura Schlessinger',
  'position': {'ranking': 796, 'score': 487, 'votes': 9}},
 {'book_id': '1720099',
  'title': 'Uninvited',
  'author_id': '790918',
  'author': 'Amanda Marrone',
  'position': {'ranking': 797, 'score': 487, 'votes': 5}},
 {'book_id': '23935182',
  'title': 'أنتيخريستوس',
  'author_id': '8473982',
  'author': 'أحمد خالد مصطفى',
  'position': {'ranking': 798, 'score': 487, 'votes': 5}},
 {'book_id': '431648',
  'title': 'The Two Marys: The Hidden History of the Mother and Wife of Jesus',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 799, 'score': 486, 'votes': 7}},
 {'book_id': '2595138',
  'title': 'The Gargoyle',
  'author_id': '149883',
  'author': 'Andrew Davidson',
  'position': {'ranking': 800, 'score': 486, 'votes': 5}},
 {'book_id': '37842353',
  'title': 'قواعد جارتين',
  'author_id': '4475150',
  'author': 'عمرو عبدالحميد',
  'position': {'ranking': 801, 'score': 486, 'votes': 5}},
 {'book_id': '3919195',
  'title': 'The Independence of Miss Mary Bennet',
  'author_id': '4917067',
  'author': 'Colleen McCullough',
  'position': {'ranking': 802, 'score': 485, 'votes': 5}},
 {'book_id': '6609758',
  'title': 'Numbers',
  'author_id': '347385',
  'author': 'Rachel Ward',
  'position': {'ranking': 803, 'score': 485, 'votes': 5}},
 {'book_id': '21727',
  'title': 'A Simple Plan',
  'author_id': '12505',
  'author': 'Scott        Smith',
  'position': {'ranking': 804, 'score': 484, 'votes': 5}},
 {'book_id': '530848',
  'title': 'Eighth Grade Bites',
  'author_id': '293603',
  'author': 'Heather Brewer',
  'position': {'ranking': 805, 'score': 484, 'votes': 7}},
 {'book_id': '10572',
  'title': 'A Clash of Kings',
  'author_id': '346732',
  'author': 'George R.R. Martin',
  'position': {'ranking': 806, 'score': 484, 'votes': 6}},
 {'book_id': '395875',
  'title': 'Dark Reunion',
  'author_id': '50873',
  'author': 'L.J. Smith',
  'position': {'ranking': 807, 'score': 484, 'votes': 5}},
 {'book_id': '7048800',
  'title': 'The Particular Sadness of Lemon Cake',
  'author_id': '5285',
  'author': 'Aimee Bender',
  'position': {'ranking': 808, 'score': 484, 'votes': 5}},
 {'book_id': '20448515',
  'title': 'Bared to You',
  'author_id': '19823',
  'author': 'Sylvia Day',
  'position': {'ranking': 809, 'score': 484, 'votes': 5}},
 {'book_id': '25373',
  'title': "Nick & Norah's Infinite Playlist",
  'author_id': '13139',
  'author': 'Rachel Cohn',
  'position': {'ranking': 810, 'score': 483, 'votes': 5}},
 {'book_id': '5357',
  'title': 'Skipping Christmas',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 811, 'score': 483, 'votes': 5}},
 {'book_id': '220563',
  'title': "Louder Than Words: A Mother's Journey in Healing Autism",
  'author_id': '7942',
  'author': 'Jenny McCarthy',
  'position': {'ranking': 812, 'score': 481, 'votes': 9}},
 {'book_id': '9284655',
  'title': "Tiger's Curse",
  'author_id': '3097905',
  'author': 'Colleen Houck',
  'position': {'ranking': 813, 'score': 481, 'votes': 5}},
 {'book_id': '32071',
  'title': 'Sons and Lovers',
  'author_id': '17623',
  'author': 'D.H. Lawrence',
  'position': {'ranking': 814, 'score': 480, 'votes': 5}},
 {'book_id': '46756',
  'title': 'Oryx and Crake',
  'author_id': '3472',
  'author': 'Margaret Atwood',
  'position': {'ranking': 815, 'score': 480, 'votes': 5}},
 {'book_id': '6609864',
  'title': 'Sweet Little Lies',
  'author_id': '1980985',
  'author': 'Lauren Conrad',
  'position': {'ranking': 816, 'score': 480, 'votes': 6}},
 {'book_id': '1430',
  'title': 'Eleven Minutes',
  'author_id': '566',
  'author': 'Paulo Coelho',
  'position': {'ranking': 817, 'score': 480, 'votes': 5}},
 {'book_id': '5344',
  'title': 'Hard Times',
  'author_id': '239579',
  'author': 'Charles Dickens',
  'position': {'ranking': 818, 'score': 479, 'votes': 6}},
 {'book_id': '4605',
  'title': 'Moo',
  'author_id': '1339',
  'author': 'Jane Smiley',
  'position': {'ranking': 819, 'score': 479, 'votes': 5}},
 {'book_id': '89717',
  'title': 'The Haunting of Hill House',
  'author_id': '13388',
  'author': 'Shirley Jackson',
  'position': {'ranking': 820, 'score': 479, 'votes': 5}},
 {'book_id': '89399',
  'title': "Fortune's Rocks",
  'author_id': '3530',
  'author': 'Anita Shreve',
  'position': {'ranking': 821, 'score': 478, 'votes': 5}},
 {'book_id': '147865',
  'title': 'Love, Rosie',
  'author_id': '7116',
  'author': 'Cecelia Ahern',
  'position': {'ranking': 822, 'score': 477, 'votes': 5}},
 {'book_id': '659635',
  'title': 'Pretty Little Mistakes: A Do-Over Novel',
  'author_id': '354403',
  'author': 'Heather McElhatton',
  'position': {'ranking': 823, 'score': 477, 'votes': 5}},
 {'book_id': '618178',
  'title': 'The Fifth Sorceress',
  'author_id': '60960',
  'author': 'Robert Newcomb',
  'position': {'ranking': 824, 'score': 477, 'votes': 5}},
 {'book_id': '5113',
  'title': 'Franny and Zooey',
  'author_id': '819789',
  'author': 'J.D. Salinger',
  'position': {'ranking': 825, 'score': 477, 'votes': 5}},
 {'book_id': '16096824',
  'title': 'A Court of Thorns and Roses',
  'author_id': '3433047',
  'author': 'Sarah J. Maas',
  'position': {'ranking': 826, 'score': 477, 'votes': 6}},
 {'book_id': '5266655',
  'title': 'Immortal',
  'author_id': '145926',
  'author': 'Gillian Shields',
  'position': {'ranking': 827, 'score': 476, 'votes': 5}},
 {'book_id': '43893',
  'title': 'Naked Empire',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 828, 'score': 475, 'votes': 6}},
 {'book_id': '14866',
  'title': 'Nineteen Minutes',
  'author_id': '7128',
  'author': 'Jodi Picoult',
  'position': {'ranking': 829, 'score': 474, 'votes': 6}},
 {'book_id': '94812',
  'title': 'H.R.H.',
  'author_id': '14255',
  'author': 'Danielle Steel',
  'position': {'ranking': 830, 'score': 473, 'votes': 6}},
 {'book_id': '125958',
  'title': 'Skin',
  'author_id': '1441',
  'author': 'Ted Dekker',
  'position': {'ranking': 831, 'score': 473, 'votes': 5}},
 {'book_id': '14249',
  'title': 'Prodigal Summer',
  'author_id': '3541',
  'author': 'Barbara Kingsolver',
  'position': {'ranking': 832, 'score': 472, 'votes': 5}},
 {'book_id': '8908',
  'title': 'World War Z: An Oral History of the Zombie War',
  'author_id': '5791',
  'author': 'Max Brooks',
  'position': {'ranking': 833, 'score': 471, 'votes': 5}},
 {'book_id': '6400',
  'title': 'Animals on the Other Side',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 834, 'score': 470, 'votes': 8}},
 {'book_id': '41913',
  'title': 'The Children of Men',
  'author_id': '17452454',
  'author': 'P.D. James',
  'position': {'ranking': 835, 'score': 469, 'votes': 5}},
 {'book_id': '15348',
  'title': "Bored of the Rings: A Parody of J.R.R. Tolkien's Lord of the Rings",
  'author_id': '4616903',
  'author': 'The Harvard Lampoon',
  'position': {'ranking': 836, 'score': 468, 'votes': 9}},
 {'book_id': '611861',
  'title': 'Elsie Dinsmore',
  'author_id': '6619',
  'author': 'Martha Finley',
  'position': {'ranking': 837, 'score': 467, 'votes': 5}},
 {'book_id': '6949478',
  'title': 'The Overton Window',
  'author_id': '188932',
  'author': 'Glenn Beck',
  'position': {'ranking': 838, 'score': 466, 'votes': 8}},
 {'book_id': '1300605',
  'title': 'Thank God for Evolution!: How the Marriage of Science and Religion Will Transform Your Life and Our World',
  'author_id': '623259',
  'author': 'Michael Dowd',
  'position': {'ranking': 839, 'score': 465, 'votes': 8}},
 {'book_id': '386286',
  'title': 'Julie of the Wolves',
  'author_id': '23509',
  'author': 'Jean Craighead George',
  'position': {'ranking': 840, 'score': 465, 'votes': 5}},
 {'book_id': '775346',
  'title': 'The Little Friend',
  'author_id': '8719',
  'author': 'Donna Tartt',
  'position': {'ranking': 841, 'score': 465, 'votes': 5}},
 {'book_id': '161426',
  'title': 'How I Live Now',
  'author_id': '93575',
  'author': 'Meg Rosoff',
  'position': {'ranking': 842, 'score': 464, 'votes': 5}},
 {'book_id': '6969361',
  'title': '2 States: The Story of My Marriage',
  'author_id': '61124',
  'author': 'Chetan Bhagat',
  'position': {'ranking': 843, 'score': 463, 'votes': 5}},
 {'book_id': '1678033',
  'title': 'The Third Jesus: The Christ We Cannot Ignore',
  'author_id': '138207',
  'author': 'Deepak Chopra',
  'position': {'ranking': 844, 'score': 462, 'votes': 9}},
 {'book_id': '65641',
  'title': 'The Silver Chair',
  'author_id': '1069006',
  'author': 'C.S. Lewis',
  'position': {'ranking': 845, 'score': 462, 'votes': 6}},
 {'book_id': '547094',
  'title': 'I Am Legend and Other Stories',
  'author_id': '8726',
  'author': 'Richard Matheson',
  'position': {'ranking': 846, 'score': 462, 'votes': 5}},
 {'book_id': '16631',
  'title': 'Steppenwolf',
  'author_id': '1113469',
  'author': 'Hermann Hesse',
  'position': {'ranking': 847, 'score': 460, 'votes': 5}},
 {'book_id': '76778',
  'title': 'The Martian Chronicles',
  'author_id': '1630',
  'author': 'Ray Bradbury',
  'position': {'ranking': 848, 'score': 460, 'votes': 5}},
 {'book_id': '895390',
  'title': 'How to Argue & Win Every Time: At Home, At Work, In Court, Everywhere, Everyday',
  'author_id': '62920',
  'author': 'Gerry Spence',
  'position': {'ranking': 849, 'score': 459, 'votes': 6}},
 {'book_id': '15447',
  'title': 'The Source of Magic',
  'author_id': '8516',
  'author': 'Piers Anthony',
  'position': {'ranking': 850, 'score': 459, 'votes': 6}},
 {'book_id': '18839',
  'title': 'Orlando',
  'author_id': '6765',
  'author': 'Virginia Woolf',
  'position': {'ranking': 851, 'score': 459, 'votes': 5}},
 {'book_id': '8909',
  'title': 'The War of the Worlds',
  'author_id': '880695',
  'author': 'H.G. Wells',
  'position': {'ranking': 852, 'score': 459, 'votes': 5}},
 {'book_id': '82970',
  'title': 'Lucky',
  'author_id': '316',
  'author': 'Alice Sebold',
  'position': {'ranking': 853, 'score': 458, 'votes': 5}},
 {'book_id': '11761',
  'title': 'Underworld',
  'author_id': '233',
  'author': 'Don DeLillo',
  'position': {'ranking': 854, 'score': 458, 'votes': 5}},
 {'book_id': '42899',
  'title': 'Dark Lover',
  'author_id': '20248',
  'author': 'J.R. Ward',
  'position': {'ranking': 855, 'score': 458, 'votes': 5}},
 {'book_id': '4137',
  'title': 'Me Talk Pretty One Day',
  'author_id': '2849',
  'author': 'David Sedaris',
  'position': {'ranking': 856, 'score': 457, 'votes': 5}},
 {'book_id': '303200',
  'title': 'Wicked: Witch & Curse',
  'author_id': '27206',
  'author': 'Nancy Holder',
  'position': {'ranking': 857, 'score': 457, 'votes': 5}},
 {'book_id': '100924',
  'title': 'Perelandra',
  'author_id': '1069006',
  'author': 'C.S. Lewis',
  'position': {'ranking': 858, 'score': 457, 'votes': 5}},
 {'book_id': '5347',
  'title': 'Bleachers',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 859, 'score': 453, 'votes': 5}},
 {'book_id': '11597',
  'title': 'The Dark Half',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 860, 'score': 452, 'votes': 6}},
 {'book_id': '7129588',
  'title': 'Forget You',
  'author_id': '203238',
  'author': 'Jennifer Echols',
  'position': {'ranking': 861, 'score': 452, 'votes': 5}},
 {'book_id': '3609763',
  'title': 'The Twilight Saga: The Official Illustrated Guide',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 862, 'score': 452, 'votes': 7}},
 {'book_id': '3711',
  'title': 'White Teeth',
  'author_id': '2522',
  'author': 'Zadie Smith',
  'position': {'ranking': 863, 'score': 451, 'votes': 5}},
 {'book_id': '321645',
  'title': 'Kissed by an Angel/The Power of Love/Soulmates',
  'author_id': '53574',
  'author': 'Elizabeth Chandler',
  'position': {'ranking': 864, 'score': 451, 'votes': 5}},
 {'book_id': '13157',
  'title': 'The Jester',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 865, 'score': 450, 'votes': 6}},
 {'book_id': '220604',
  'title': "Adventures of a Psychic: The Fascinating and Inspiring True-Life Story of One of America's Most Successful Clairvoyants",
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 866, 'score': 450, 'votes': 9}},
 {'book_id': '132025',
  'title': 'Tarantula',
  'author_id': '8898',
  'author': 'Bob Dylan',
  'position': {'ranking': 867, 'score': 448, 'votes': 6}},
 {'book_id': '852470',
  'title': "I'd Tell You I Love You, But Then I'd Have to Kill You",
  'author_id': '56224',
  'author': 'Ally Carter',
  'position': {'ranking': 868, 'score': 448, 'votes': 6}},
 {'book_id': '2129518',
  'title': 'The Eye of Argon',
  'author_id': '968906',
  'author': 'Jim Theis',
  'position': {'ranking': 869, 'score': 448, 'votes': 5}},
 {'book_id': '332348',
  'title': 'The Year of Fog',
  'author_id': '84728',
  'author': 'Michelle Richmond',
  'position': {'ranking': 870, 'score': 447, 'votes': 5}},
 {'book_id': '10914',
  'title': 'Songs of the Humpback Whale',
  'author_id': '7128',
  'author': 'Jodi Picoult',
  'position': {'ranking': 871, 'score': 447, 'votes': 6}},
 {'book_id': '43884',
  'title': 'Phantom',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 872, 'score': 446, 'votes': 5}},
 {'book_id': '6613',
  'title': 'Four Blondes',
  'author_id': '4415',
  'author': 'Candace Bushnell',
  'position': {'ranking': 873, 'score': 444, 'votes': 5}},
 {'book_id': '10603',
  'title': 'Cujo',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 874, 'score': 443, 'votes': 7}},
 {'book_id': '7091488',
  'title': 'Dead in the Family',
  'author_id': '17061',
  'author': 'Charlaine Harris',
  'position': {'ranking': 875, 'score': 443, 'votes': 5}},
 {'book_id': '2318271',
  'title': 'The Last Lecture',
  'author_id': '287960',
  'author': 'Randy Pausch',
  'position': {'ranking': 876, 'score': 442, 'votes': 5}},
 {'book_id': '548739',
  'title': 'Confessions of a Jane Austen Addict',
  'author_id': '301395',
  'author': 'Laurie Viera Rigler',
  'position': {'ranking': 877, 'score': 442, 'votes': 5}},
 {'book_id': '319604',
  'title': 'Buddha: A Story of Enlightenment',
  'author_id': '138207',
  'author': 'Deepak Chopra',
  'position': {'ranking': 878, 'score': 442, 'votes': 7}},
 {'book_id': '33441',
  'title': 'Fluke: Or, I Know Why the Winged Whale Sings',
  'author_id': '16218',
  'author': 'Christopher Moore',
  'position': {'ranking': 879, 'score': 441, 'votes': 5}},
 {'book_id': '1371',
  'title': 'The Iliad',
  'author_id': '903',
  'author': 'Homer',
  'position': {'ranking': 880, 'score': 439, 'votes': 5}},
 {'book_id': '7510',
  'title': 'The Beach House',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 881, 'score': 438, 'votes': 7}},
 {'book_id': '611298',
  'title': 'I Am America',
  'author_id': '6649',
  'author': 'Stephen Colbert',
  'position': {'ranking': 882, 'score': 436, 'votes': 6}},
 {'book_id': '6431790',
  'title': 'Fang',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 883, 'score': 435, 'votes': 6}},
 {'book_id': '95186',
  'title': 'The Inheritance of Loss',
  'author_id': '31428',
  'author': 'Kiran Desai',
  'position': {'ranking': 884, 'score': 434, 'votes': 6}},
 {'book_id': '10585',
  'title': 'Insomnia',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 885, 'score': 431, 'votes': 6}},
 {'book_id': '22557272',
  'title': 'The Girl on the Train',
  'author_id': '1063732',
  'author': 'Paula Hawkins',
  'position': {'ranking': 886, 'score': 429, 'votes': 5}},
 {'book_id': '6408',
  'title': "Sylvia Browne's Journey of the Soul-Box Set",
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 887, 'score': 428, 'votes': 8}},
 {'book_id': '3111957',
  'title': 'Book of Mormon Stories',
  'author_id': '1367163',
  'author': 'The Church of Jesus Christ of Latter-day Saints',
  'position': {'ranking': 888, 'score': 428, 'votes': 8}},
 {'book_id': '30868',
  'title': 'The Bean Trees',
  'author_id': '3541',
  'author': 'Barbara Kingsolver',
  'position': {'ranking': 889, 'score': 427, 'votes': 5}},
 {'book_id': '7933617',
  'title': 'Destined',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 890, 'score': 425, 'votes': 5}},
 {'book_id': '34114362',
  'title': 'What Happened',
  'author_id': '2778471',
  'author': 'Hillary Rodham Clinton',
  'position': {'ranking': 891, 'score': 423, 'votes': 5}},
 {'book_id': '237209',
  'title': 'In the Woods',
  'author_id': '138825',
  'author': 'Tana French',
  'position': {'ranking': 892, 'score': 413, 'votes': 5}},
 {'book_id': '601740',
  'title': 'Angels and Spirit Guides: How to Call Upon Your Angels and Spirit Guide for Help',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 893, 'score': 412, 'votes': 8}},
 {'book_id': '6397',
  'title': 'Angels, Guides, and Ghosts',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 894, 'score': 408, 'votes': 7}},
 {'book_id': '58696',
  'title': 'David Copperfield',
  'author_id': '239579',
  'author': 'Charles Dickens',
  'position': {'ranking': 895, 'score': 407, 'votes': 5}},
 {'book_id': '7124095',
  'title': 'Gone',
  'author_id': '767547',
  'author': 'Lisa McMann',
  'position': {'ranking': 896, 'score': 407, 'votes': 5}},
 {'book_id': '16101128',
  'title': 'The 5th Wave',
  'author_id': '3377941',
  'author': 'Rick Yancey',
  'position': {'ranking': 897, 'score': 407, 'votes': 5}},
 {'book_id': '899325',
  'title': 'The Late Great Planet Earth',
  'author_id': '11197',
  'author': 'Hal Lindsey',
  'position': {'ranking': 898, 'score': 405, 'votes': 6}},
 {'book_id': '5720',
  'title': 'Rainbow Six',
  'author_id': '3892',
  'author': 'Tom Clancy',
  'position': {'ranking': 899, 'score': 403, 'votes': 5}},
 {'book_id': '43892',
  'title': 'Blood of the Fold',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 900, 'score': 403, 'votes': 6}},
 {'book_id': '690926',
  'title': 'The Twilight Collection',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 901, 'score': 403, 'votes': 5}},
 {'book_id': '78433',
  'title': 'The Blind Assassin',
  'author_id': '3472',
  'author': 'Margaret Atwood',
  'position': {'ranking': 902, 'score': 402, 'votes': 5}},
 {'book_id': '601739',
  'title': "Sylvia Browne's Tools for Life",
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 903, 'score': 400, 'votes': 7}},
 {'book_id': '24275154',
  'title': 'Vida extra',
  'author_id': '11907151',
  'author': 'Gina Tost',
  'position': {'ranking': 904, 'score': 400, 'votes': 4}},
 {'book_id': '160251',
  'title': 'Ordinary People',
  'author_id': '30830',
  'author': 'Judith Guest',
  'position': {'ranking': 905, 'score': 399, 'votes': 5}},
 {'book_id': '147243',
  'title': 'Touching Spirit Bear',
  'author_id': '18084149',
  'author': 'Ben Mikaelsen',
  'position': {'ranking': 906, 'score': 399, 'votes': 4}},
 {'book_id': '567678',
  'title': 'The Wasp Factory',
  'author_id': '7628',
  'author': 'Iain Banks',
  'position': {'ranking': 907, 'score': 398, 'votes': 4}},
 {'book_id': '32732574',
  'title': 'Crash and Burn',
  'author_id': '38809',
  'author': 'James Rollins',
  'position': {'ranking': 908, 'score': 398, 'votes': 4}},
 {'book_id': '210293',
  'title': 'Return to the Secret Garden',
  'author_id': '8061',
  'author': 'Susan Moody',
  'position': {'ranking': 909, 'score': 397, 'votes': 5}},
 {'book_id': '104379',
  'title': 'That Summer',
  'author_id': '2987',
  'author': 'Sarah Dessen',
  'position': {'ranking': 910, 'score': 397, 'votes': 5}},
 {'book_id': '8852',
  'title': 'Macbeth',
  'author_id': '947',
  'author': 'William Shakespeare',
  'position': {'ranking': 911, 'score': 397, 'votes': 6}},
 {'book_id': '6697',
  'title': 'Little Altars Everywhere',
  'author_id': '3489',
  'author': 'Rebecca Wells',
  'position': {'ranking': 912, 'score': 396, 'votes': 5}},
 {'book_id': '7869',
  'title': 'The Bourne Identity',
  'author_id': '5293',
  'author': 'Robert Ludlum',
  'position': {'ranking': 913, 'score': 396, 'votes': 5}},
 {'book_id': '88442',
  'title': 'Austerlitz',
  'author_id': '6580622',
  'author': 'W.G. Sebald',
  'position': {'ranking': 914, 'score': 396, 'votes': 4}},
 {'book_id': '80660',
  'title': 'We Need to Talk About Kevin',
  'author_id': '45922',
  'author': 'Lionel Shriver',
  'position': {'ranking': 915, 'score': 395, 'votes': 4}},
 {'book_id': '5176',
  'title': 'While I Was Gone',
  'author_id': '3517',
  'author': 'Sue Miller',
  'position': {'ranking': 916, 'score': 395, 'votes': 4}},
 {'book_id': '88077',
  'title': 'The Magic Mountain',
  'author_id': '19405',
  'author': 'Thomas Mann',
  'position': {'ranking': 917, 'score': 395, 'votes': 4}},
 {'book_id': '105578',
  'title': 'One Night at the Call Center',
  'author_id': '61124',
  'author': 'Chetan Bhagat',
  'position': {'ranking': 918, 'score': 395, 'votes': 4}},
 {'book_id': '2520383',
  'title': 'The Rose Labyrinth',
  'author_id': '29554',
  'author': 'Titania Hardie',
  'position': {'ranking': 919, 'score': 395, 'votes': 4}},
 {'book_id': '31463',
  'title': 'Far From the Madding Crowd',
  'author_id': '15905',
  'author': 'Thomas Hardy',
  'position': {'ranking': 920, 'score': 394, 'votes': 5}},
 {'book_id': '6401',
  'title': 'Prophecy: What the Future Holds for You',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 921, 'score': 394, 'votes': 7}},
 {'book_id': '1829655',
  'title': "The Demon's Lexicon",
  'author_id': '836009',
  'author': 'Sarah Rees Brennan',
  'position': {'ranking': 922, 'score': 394, 'votes': 5}},
 {'book_id': '59716',
  'title': 'To the Lighthouse',
  'author_id': '6765',
  'author': 'Virginia Woolf',
  'position': {'ranking': 923, 'score': 394, 'votes': 6}},
 {'book_id': '16068905',
  'title': 'Fangirl',
  'author_id': '4208569',
  'author': 'Rainbow Rowell',
  'position': {'ranking': 924, 'score': 394, 'votes': 4}},
 {'book_id': '770303',
  'title': 'Juventud en éxtasis',
  'author_id': '86285',
  'author': 'Carlos Cuauhtémoc Sánchez',
  'position': {'ranking': 925, 'score': 393, 'votes': 4}},
 {'book_id': '1476261',
  'title': 'Girls of Riyadh',
  'author_id': '4415675',
  'author': 'Rajaa Alsanea',
  'position': {'ranking': 926, 'score': 393, 'votes': 4}},
 {'book_id': '5091',
  'title': 'The Dark Tower',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 927, 'score': 393, 'votes': 4}},
 {'book_id': '29653134',
  'title': 'شرح رواية أنتيخريستوس - التحليل والمصادر',
  'author_id': '8473982',
  'author': 'أحمد خالد مصطفى',
  'position': {'ranking': 928, 'score': 393, 'votes': 4}},
 {'book_id': '13517535',
  'title': 'Thoughtless',
  'author_id': '4372391',
  'author': 'S.C. Stephens',
  'position': {'ranking': 929, 'score': 392, 'votes': 4}},
 {'book_id': '34039540',
  'title': 'ليالي الجحيم',
  'author_id': '8473982',
  'author': 'أحمد خالد مصطفى',
  'position': {'ranking': 930, 'score': 392, 'votes': 4}},
 {'book_id': '761575',
  'title': 'House Atreides',
  'author_id': '56',
  'author': 'Brian Herbert',
  'position': {'ranking': 931, 'score': 391, 'votes': 5}},
 {'book_id': '6644117',
  'title': 'The Iron King',
  'author_id': '2995873',
  'author': 'Julie Kagawa',
  'position': {'ranking': 932, 'score': 391, 'votes': 4}},
 {'book_id': '6976',
  'title': 'The Mermaid Chair',
  'author_id': '4711',
  'author': 'Sue Monk Kidd',
  'position': {'ranking': 933, 'score': 391, 'votes': 4}},
 {'book_id': '24100',
  'title': 'The Golden Notebook',
  'author_id': '7728',
  'author': 'Doris Lessing',
  'position': {'ranking': 934, 'score': 390, 'votes': 4}},
 {'book_id': '62032',
  'title': 'The 13½ Lives of Captain Bluebear',
  'author_id': '34878',
  'author': 'Walter Moers',
  'position': {'ranking': 935, 'score': 390, 'votes': 4}},
 {'book_id': '6425',
  'title': 'Hard Eight',
  'author_id': '2384',
  'author': 'Janet Evanovich',
  'position': {'ranking': 936, 'score': 390, 'votes': 5}},
 {'book_id': '7920450',
  'title': 'Comfort Food',
  'author_id': '2654606',
  'author': 'Kitty Thomas',
  'position': {'ranking': 937, 'score': 390, 'votes': 4}},
 {'book_id': '23766634',
  'title': 'A Court of Wings and Ruin',
  'author_id': '3433047',
  'author': 'Sarah J. Maas',
  'position': {'ranking': 938, 'score': 390, 'votes': 5}},
 {'book_id': '43566744',
  'title': 'ملائك نصيبين',
  'author_id': '8473982',
  'author': 'أحمد خالد مصطفى',
  'position': {'ranking': 939, 'score': 390, 'votes': 4}},
 {'book_id': '7572',
  'title': 'Even Cowgirls Get the Blues',
  'author_id': '197',
  'author': 'Tom Robbins',
  'position': {'ranking': 940, 'score': 389, 'votes': 5}},
 {'book_id': '3087',
  'title': 'A Room with a View',
  'author_id': '86404',
  'author': 'E.M. Forster',
  'position': {'ranking': 941, 'score': 389, 'votes': 5}},
 {'book_id': '65057',
  'title': 'A Good Dog: The Story of Orson, Who Changed My Life',
  'author_id': '36719',
  'author': 'Jon Katz',
  'position': {'ranking': 942, 'score': 389, 'votes': 4}},
 {'book_id': '1736739',
  'title': 'Olive Kitteridge',
  'author_id': '97313',
  'author': 'Elizabeth Strout',
  'position': {'ranking': 943, 'score': 389, 'votes': 4}},
 {'book_id': '251688',
  'title': "Breakfast at Tiffany's and Three Stories",
  'author_id': '431149',
  'author': 'Truman Capote',
  'position': {'ranking': 944, 'score': 388, 'votes': 4}},
 {'book_id': '11691',
  'title': 'Snow',
  'author_id': '1728',
  'author': 'Orhan Pamuk',
  'position': {'ranking': 945, 'score': 388, 'votes': 4}},
 {'book_id': '23009428',
  'title': 'سلسلة الشيطان يحكي - العدد الأول: مطعم اللحوم البشرية',
  'author_id': '8473982',
  'author': 'أحمد خالد مصطفى',
  'position': {'ranking': 946, 'score': 388, 'votes': 4}},
 {'book_id': '405999',
  'title': 'Confessions of a Sociopathic Social Climber: The Katya Livingston Chronicles',
  'author_id': '4636148',
  'author': 'Adèle Lang',
  'position': {'ranking': 947, 'score': 387, 'votes': 5}},
 {'book_id': '67238',
  'title': 'Dead Poets Society',
  'author_id': '52601',
  'author': 'N.H. Kleinbaum',
  'position': {'ranking': 948, 'score': 386, 'votes': 4}},
 {'book_id': '668608',
  'title': 'Ghostwalk',
  'author_id': '76199',
  'author': 'Rebecca Stott',
  'position': {'ranking': 949, 'score': 386, 'votes': 4}},
 {'book_id': '6614',
  'title': 'Lipstick Jungle',
  'author_id': '4415',
  'author': 'Candace Bushnell',
  'position': {'ranking': 950, 'score': 386, 'votes': 5}},
 {'book_id': '18943',
  'title': 'Confessions of an Ugly Stepsister',
  'author_id': '7025',
  'author': 'Gregory Maguire',
  'position': {'ranking': 951, 'score': 386, 'votes': 5}},
 {'book_id': '41667',
  'title': 'My Side of the Mountain',
  'author_id': '23509',
  'author': 'Jean Craighead George',
  'position': {'ranking': 952, 'score': 386, 'votes': 4}},
 {'book_id': '13497818',
  'title': 'The Casual Vacancy',
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 953, 'score': 386, 'votes': 4}},
 {'book_id': '5168',
  'title': 'Where the Heart Is',
  'author_id': '3510',
  'author': 'Billie Letts',
  'position': {'ranking': 954, 'score': 384, 'votes': 4}},
 {'book_id': '13262783',
  'title': 'Every Day',
  'author_id': '11664',
  'author': 'David Levithan',
  'position': {'ranking': 955, 'score': 384, 'votes': 4}},
 {'book_id': '28866',
  'title': 'Dark Prince',
  'author_id': '6268',
  'author': 'Christine Feehan',
  'position': {'ranking': 956, 'score': 384, 'votes': 4}},
 {'book_id': '5171894',
  'title': 'The Doomsday Key',
  'author_id': '38809',
  'author': 'James Rollins',
  'position': {'ranking': 957, 'score': 384, 'votes': 4}},
 {'book_id': '7619292',
  'title': 'Twilight: The Graphic Novel, Vol. 1',
  'author_id': '4379470',
  'author': 'Young Kim',
  'position': {'ranking': 958, 'score': 383, 'votes': 5}},
 {'book_id': '5797',
  'title': 'Vanity Fair',
  'author_id': '3953',
  'author': 'William Makepeace Thackeray',
  'position': {'ranking': 959, 'score': 382, 'votes': 4}},
 {'book_id': '50840',
  'title': "Farnham's Freehold",
  'author_id': '205',
  'author': 'Robert A. Heinlein',
  'position': {'ranking': 960, 'score': 382, 'votes': 5}},
 {'book_id': '38913',
  'title': 'Follow Your Heart',
  'author_id': '21930',
  'author': 'Susanna Tamaro',
  'position': {'ranking': 961, 'score': 382, 'votes': 4}},
 {'book_id': '22328',
  'title': 'Neuromancer',
  'author_id': '9226',
  'author': 'William Gibson',
  'position': {'ranking': 962, 'score': 382, 'votes': 4}},
 {'book_id': '7082',
  'title': 'Do Androids Dream of Electric Sheep?',
  'author_id': '4764',
  'author': 'Philip K. Dick',
  'position': {'ranking': 963, 'score': 381, 'votes': 4}},
 {'book_id': '5368',
  'title': 'Forever Amber',
  'author_id': '3620',
  'author': 'Kathleen Winsor',
  'position': {'ranking': 964, 'score': 380, 'votes': 4}},
 {'book_id': '228534',
  'title': 'The Weight of Water',
  'author_id': '3530',
  'author': 'Anita Shreve',
  'position': {'ranking': 965, 'score': 380, 'votes': 4}},
 {'book_id': '56759',
  'title': 'The Mayor of Casterbridge',
  'author_id': '15905',
  'author': 'Thomas Hardy',
  'position': {'ranking': 966, 'score': 380, 'votes': 5}},
 {'book_id': '10619',
  'title': 'Rose Madder',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 967, 'score': 380, 'votes': 4}},
 {'book_id': '33600',
  'title': 'Shantaram',
  'author_id': '18907',
  'author': 'Gregory David Roberts',
  'position': {'ranking': 968, 'score': 380, 'votes': 4}},
 {'book_id': '257837',
  'title': 'Shane',
  'author_id': '150701',
  'author': 'Jack Schaefer',
  'position': {'ranking': 969, 'score': 379, 'votes': 5}},
 {'book_id': '22695',
  'title': 'Summer Sisters',
  'author_id': '12942',
  'author': 'Judy Blume',
  'position': {'ranking': 970, 'score': 379, 'votes': 4}},
 {'book_id': '50877',
  'title': 'The Number of the Beast',
  'author_id': '205',
  'author': 'Robert A. Heinlein',
  'position': {'ranking': 971, 'score': 379, 'votes': 4}},
 {'book_id': '10941624',
  'title': 'Ethereal',
  'author_id': '4096668',
  'author': 'Addison Moore',
  'position': {'ranking': 972, 'score': 379, 'votes': 4}},
 {'book_id': '7864437',
  'title': 'The Death Cure',
  'author_id': '348878',
  'author': 'James Dashner',
  'position': {'ranking': 973, 'score': 379, 'votes': 4}},
 {'book_id': '830',
  'title': 'Snow Crash',
  'author_id': '545',
  'author': 'Neal Stephenson',
  'position': {'ranking': 974, 'score': 378, 'votes': 4}},
 {'book_id': '11408650',
  'title': 'The Unbecoming of Mara Dyer',
  'author_id': '4126827',
  'author': 'Michelle Hodkin',
  'position': {'ranking': 975, 'score': 378, 'votes': 4}},
 {'book_id': '5489684',
  'title': 'Vampire Kisses: The Beginning',
  'author_id': '153734',
  'author': 'Ellen Schreiber',
  'position': {'ranking': 976, 'score': 377, 'votes': 5}},
 {'book_id': '77507',
  'title': 'Red Mars',
  'author_id': '1858',
  'author': 'Kim Stanley Robinson',
  'position': {'ranking': 977, 'score': 376, 'votes': 4}},
 {'book_id': '246245',
  'title': 'The Deerslayer',
  'author_id': '9121',
  'author': 'James Fenimore Cooper',
  'position': {'ranking': 978, 'score': 376, 'votes': 4}},
 {'book_id': '11590',
  'title': "'Salem's Lot",
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 979, 'score': 376, 'votes': 5}},
 {'book_id': '34497',
  'title': 'The Color of Magic',
  'author_id': '1654',
  'author': 'Terry Pratchett',
  'position': {'ranking': 980, 'score': 376, 'votes': 4}},
 {'book_id': '46544',
  'title': 'The Shelters of Stone',
  'author_id': '861',
  'author': 'Jean M. Auel',
  'position': {'ranking': 981, 'score': 375, 'votes': 5}},
 {'book_id': '601745',
  'title': 'Making Contact with the Other Side: How to Enchance Your Own Psychic Powers',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 982, 'score': 375, 'votes': 8}},
 {'book_id': '44184',
  'title': 'Monster',
  'author_id': '13291',
  'author': 'Walter Dean Myers',
  'position': {'ranking': 983, 'score': 374, 'votes': 4}},
 {'book_id': '28186',
  'title': 'The Sea of Monsters',
  'author_id': '15872',
  'author': 'Rick Riordan',
  'position': {'ranking': 984, 'score': 374, 'votes': 4}},
 {'book_id': '469571',
  'title': 'All the Pretty Horses',
  'author_id': '4178',
  'author': 'Cormac McCarthy',
  'position': {'ranking': 985, 'score': 374, 'votes': 4}},
 {'book_id': '79379',
  'title': 'Violets Are Blue',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 986, 'score': 373, 'votes': 6}},
 {'book_id': '15924',
  'title': 'At First Sight',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 987, 'score': 373, 'votes': 4}},
 {'book_id': '6442769',
  'title': 'Paper Towns',
  'author_id': '1406384',
  'author': 'John Green',
  'position': {'ranking': 988, 'score': 373, 'votes': 5}},
 {'book_id': '86172',
  'title': 'A Man in Full',
  'author_id': '3083854',
  'author': 'Tom Wolfe',
  'position': {'ranking': 989, 'score': 372, 'votes': 6}},
 {'book_id': '28862',
  'title': 'The Prince',
  'author_id': '16201',
  'author': 'Niccolò Machiavelli',
  'position': {'ranking': 990, 'score': 372, 'votes': 5}},
 {'book_id': '554798',
  'title': 'The Official Pokemon Handbook',
  'author_id': '347488',
  'author': 'Maria S. Barbo',
  'position': {'ranking': 991, 'score': 371, 'votes': 6}},
 {'book_id': '5960207',
  'title': 'Mr. & Mrs. Fitzwilliam Darcy: Two Shall Become One',
  'author_id': '603838',
  'author': 'Sharon Lathan',
  'position': {'ranking': 992, 'score': 370, 'votes': 4}},
 {'book_id': '7673',
  'title': 'Eaters of the Dead',
  'author_id': '5194',
  'author': 'Michael Crichton',
  'position': {'ranking': 993, 'score': 369, 'votes': 5}},
 {'book_id': '18412',
  'title': 'The Wind Done Gone',
  'author_id': '11087',
  'author': 'Alice Randall',
  'position': {'ranking': 994, 'score': 369, 'votes': 4}},
 {'book_id': '4008',
  'title': 'The Devil and Miss Prym',
  'author_id': '566',
  'author': 'Paulo Coelho',
  'position': {'ranking': 995, 'score': 368, 'votes': 4}},
 {'book_id': '109513',
  'title': 'The Phantom of Manhattan',
  'author_id': '36714',
  'author': 'Frederick Forsyth',
  'position': {'ranking': 996, 'score': 368, 'votes': 4}},
 {'book_id': '6381205',
  'title': 'Soulless',
  'author_id': '2891665',
  'author': 'Gail Carriger',
  'position': {'ranking': 997, 'score': 367, 'votes': 4}},
 {'book_id': '6391',
  'title': 'Christmas in Heaven',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 998, 'score': 366, 'votes': 6}},
 {'book_id': '117376',
  'title': 'Rush Hudson Limbaugh and His Times: Reflections on a Life Well Lived',
  'author_id': '19794',
  'author': 'Rush Limbaugh',
  'position': {'ranking': 999, 'score': 366, 'votes': 9}},
 {'book_id': '6936382',
  'title': 'Anna and the French Kiss',
  'author_id': '3095893',
  'author': 'Stephanie Perkins',
  'position': {'ranking': 1000, 'score': 365, 'votes': 4}},
 ...]
In [ ]:
def check_book_id(book_id):
    return 1 if book_id in int_book_ids else 0
In [ ]:
value2 = booko3.loc[0, 'books']#extract the column books from the row worst books of all time
chunksize= 10**4
chunks=[]

for chunk in pd.read_json("lighter_books.json", chunksize=chunksize, lines=True):
    chunk['id'] = pd.to_numeric(chunk['id'])
    chunk['num_pages'] = pd.to_numeric(chunk['num_pages'])
    chunk = chunk.dropna(subset=['id', 'num_pages'])#drop rows, that contain an empty string either for 'id' or 'num_pages'
    chunks.append(chunk[['id', 'num_pages']])#Only keep the columns 'id' and 'num_pages'
df = pd.concat(chunks, axis=0)#create a new dataframe only containig the stuff that was kept from the chunks
book_ids = [d['book_id'] for d in value2]#Make a list of the book_ids
int_book_ids = list(map(int, book_ids))# make integers of the book_ids
df['sino'] = df['id'].apply(check_book_id)#call the function check_book_id on every element of the list and store either 1 or 0 in a new column 'sino'
filtered_df = df[df['num_pages'] > 700] # Select only the books with more than 700 pages
filtered_df2 = df[(df['num_pages'] > 700) & (df['sino'] == 1)]# select the books with more than 700 pages and are contained in the 'worst books of all time' list
prob= len(filtered_df2)/len(filtered_df)
print(prob)
0.0019798416126709864

The probability of a book being included in this list, knowing it has more than 700 pages is 0.0019798416126709864

Q4 Are the events X=’Being Included in The Worst Books of All Time list’ and Y=’Having more than 700 pages’ independent? Explain how you have obtained your answer.¶

In [ ]:
#Are the events X=’Being Included in The Worst Books of All Time list’ and Y=’Having more than 700 pages’ independent? Explain how you have obtained your answer.
# We will do a chi- square test on idependence to check whether they are independent or not
In [ ]:
import json
import pandas as pd
import scipy.stats as stats
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
booko2= pd.read_json("lighter_books.json", nrows=10, lines= True)
booko3=pd.read_json("list.json", nrows=10, lines=True)
In [ ]:
#var1= Being included in the Worst Books of All Time list, ##code extracted from 7.3
value2 = booko3.loc[0, 'books']
def check_book_id(book_id):
    return 1 if book_id in int_book_ids else 0
chunksize= 10**4
chunks=[]

for chunk in pd.read_json("lighter_books.json", chunksize=chunksize, lines=True):
    chunk['id'] = pd.to_numeric(chunk['id'])
    chunk['num_pages'] = pd.to_numeric(chunk['num_pages'])
    chunk = chunk.dropna(subset=['id', 'num_pages'])
    chunks.append(chunk[['id', 'num_pages']])
df = pd.concat(chunks, axis=0)
book_ids = [d['book_id'] for d in value2]
int_book_ids = list(map(int, book_ids))
df['sino'] = df['id'].apply(check_book_id)
In [ ]:
#var2= Having more than 700 pages
def check_700(num_pages):
    return 1 if num_pages>700 else 0
df['si700'] = df['num_pages'].apply(check_700)# calls function for every row on the column 'num_pages' and stores either 0 or one in the new column 'si700'
In [ ]:
contingency_table = pd.crosstab(df['sino'], df['si700'])
In [ ]:
chi2, p, dof, expected = stats.chi2_contingency(contingency_table)
In [ ]:
print(p)
3.092149285282895e-06

As the p value is smaller than 0.05 we can conclude that the two variables are not independent

[RQ8] Charts, statistical tests, and analysis methods are splendid tools to illustrate your data-driven decisions to check whether a hypothesis is correct.¶

In [ ]:
from google.colab import drive
drive.mount('/content/drive')
%cd /content/drive/MyDrive/HW2
Mounted at /content/drive
/content/drive/MyDrive/HW2
In [ ]:
import json
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
import numpy as np
In [ ]:
authors_set = 'lighter_authors.json'
books_set = 'lighter_books.json'
In [ ]:
chunk_size = 80000
# Initializing an empty list to store chunks
books = pd.DataFrame()
# Looping through each chunk and append it to the result dataframe
for chunk in pd.read_json(books_set, lines=True, chunksize=chunk_size):
    selected_chunk = chunk[['average_rating','num_pages','language']]
    # Appending the selected chunk to the list
    books = pd.concat([books, selected_chunk], ignore_index=True)

To solve the question, we loaded the books dataset with the specific columns of interest and we will do data cleaning over those columns in the next cells:

Q1 Can you demonstrate that readers usually rate the longest books as the worst?¶

In [ ]:
books['num_pages'] = pd.to_numeric(books['num_pages'], errors='coerce')
In [ ]:
books=books[books['average_rating'] != '']
books=books[books['num_pages']!='']
In [ ]:
books.dropna(subset='num_pages',inplace=True)
In [ ]:
books.dropna(subset='average_rating',inplace=True)
In [ ]:
max(books['num_pages'])
Out[ ]:
2147483647.0

As we can see maximum number of pages is too high, we will employ the quantile method to discard enormously large number of pages.

In [ ]:
max_pages= np.quantile(books["num_pages"], q = 0.999)
In [ ]:
min(books['num_pages'])
Out[ ]:
0.0

We are similarly using quantile to discard very low number of pages. A zero page book does not make sense.

In [ ]:
min_pages=np.quantile(books["num_pages"], q = 0.2)
In [ ]:
filtered_books=books[(books["num_pages"]>=min_pages) & (books["num_pages"]<=max_pages)]
In [ ]:
correlation = filtered_books['average_rating'].corr(filtered_books['num_pages'])
print(correlation)
0.07579438770675485

We observe a positive correlation between Number of Pages and Average Rating.

In [ ]:
import matplotlib.pyplot as plt
plt.scatter(filtered_books["num_pages"], filtered_books["average_rating"], alpha=0.1, edgecolors = 'purple')
plt.title("Scatterplot of Average Ratings and Number of Pages")
plt.xlabel("Number of pages")
plt.ylabel("Average Rating")
plt.show()

The positive correlation is clearly visible in the above scatter plot, it implies that, as the number of page increases, average rating also increases. In other words, readers seem to rate longer books higher, in that case, the result is quite opposite to the belief in the question that wanted us to demonstrate a negative correlation.

Q2 Compare the average rate distribution for English and non-English books with a proper statistical procedure. What can you conclude about those two groups?¶

In [ ]:
from scipy.stats import ttest_ind
In [ ]:
books=books[books['language'] != '']
In [ ]:
books.dropna(subset='language',inplace=True)
In [ ]:
#Creting a new column that is 1 for english books and 0 for nonenglish books
books['is_english']= books['language'].apply(lambda x: int( x[:3] in ["en","eng","en-","en-US", "en_GB", "eng"]))
In [ ]:
books['is_english'].value_counts()
Out[ ]:
1    926039
0    890798
Name: is_english, dtype: int64
In [ ]:
#Create groups for t-test and doing t-test
english_books= books[books['is_english'] ==1]
non_english_books= books[books['is_english'] ==0]
In [ ]:
import random
ratingsForEng = random.sample(english_books["average_rating"].tolist(), 1000)
ratingsForNonEng = random.sample(non_english_books["average_rating"].tolist(), 1000)
print(np.var(ratingsForEng))
print(np.var(ratingsForNonEng))
0.6492805899999999
0.6629983116

Since the t-test is done on smaller samples of data, we are sampling the data with random samples and we observe they have very similar variances, hence, in the t-test, we do it on equal variance:

In [ ]:
t_stat, p_val = ttest_ind(ratingsForEng, ratingsForNonEng,equal_var=True)
print("Value of the t statistics:", t_stat, "The p-value: ", p_val)
Value of the t statistics: 1.0672253591751661 The p-value:  0.2859990170375133

Since the p-value (0.286) is greater than the significance level=0.05, we do not have enough evidence to reject the null hypothesis. The null hypothesis typically states that there is no significant difference between the average rate distribution of English and Non-English Books.

The t-statistic of 1.07, while indicating some difference between the groups, is not strong enough evidence to overcome the relatively high p-value. This suggests that the observed difference may not be statistically significant.

To further illustrate this we also plotted the average rate distribution for english and nonenglish books in histograms:

In [ ]:
plt.figure(figsize=(15, 5))
plt.subplot(1, 2, 1)  # Subplot with 1 row, 2 columns, first plot
plt.hist(english_books['average_rating'], alpha=0.8, label='English', color='darkblue')
plt.title('Average Ratings for English Books')
plt.xlabel('Average Rating')
plt.ylabel('Frequency')
plt.legend()
plt.subplot(1, 2, 2)  # Subplot with 1 row, 2 columns, second plot
plt.hist(non_english_books['average_rating'], alpha=0.5, label='Non-English', color='cyan')
plt.title('Average Ratings for Non-English Books')
plt.xlabel('Average Rating')
plt.ylabel('Frequency')
plt.legend()
Out[ ]:
<matplotlib.legend.Legend at 0x7d8ca20665c0>

Conclusion:

The two Histograms illustrate that there is no significant difference in the average rate distribution of english and non-english books

Q3 About the two groups in the previous question, extract helpful statistics like mode, mean, median, and quartiles, explaining their role in a box plot.¶

In [ ]:
#Defining variables for the boxplot
ratings_english = english_books['average_rating'].tolist()
ratings_non_english = non_english_books['average_rating'].tolist()
#Creating the boxplot
plt.boxplot([ratings_english, ratings_non_english], labels=['english', 'non-english'])
plt.title('Comparison of average rates')
plt.ylabel('Rate')
plt.show()
In [ ]:
#Calculating the means
mean_english = english_books['average_rating'].mean()
mean_non_english = non_english_books['average_rating'].mean()
print('Mean english books: %.3f' % mean_english)
print('Mean non-english books: %.3f' % mean_non_english)
Mean english books: 3.753
Mean non-english books: 3.707

The two means are really close to each other. The mean isn't shown in a boxplot. If the data is perfectly symmetric, the mean is identical with the median.

In [ ]:
#Calculating the median
median_english = english_books['average_rating'].median()
median_non_english = non_english_books['average_rating'].median()
print('Median english books: %.3f' % median_english)
print('Median non-english books: %.3f' % median_non_english)
Median english books: 3.900
Median non-english books: 3.870

The medians of english and non-english books are really close to each other. The median is the yellow line in the boxplot. Half of the average rates are above the line and half below it. In a boxplot the median is important to show the skewness of the data. As the median for both english and non-english books is more or less in the middle of the box, we can conclude that are data is symmetric.

In [ ]:
#Calculating the mode
mode_english = english_books['average_rating'].mode()
mode_non_english = non_english_books['average_rating'].mode()
print('Mode english books: %.3f' % mode_english)
print('Mode non-english books: %.3f' % mode_non_english)
Mode english books: 4.000
Mode non-english books: 4.000
In [ ]:
#Calculating the quartiles
q1_english = english_books['average_rating'].quantile(0.25)
q2_english = english_books['average_rating'].quantile(0.5)
q3_english = english_books['average_rating'].quantile(0.75)

q1_non_english = non_english_books['average_rating'].quantile(0.25)
q2_non_english = non_english_books['average_rating'].quantile(0.5)
q3_non_english = non_english_books['average_rating'].quantile(0.75)

print('Q1 english books: %.3f' % q1_english)
print('Q2 english books: %.3f' % q2_english)
print('Q3 english books: %.3f' % q3_english)
print('Q1 non-english books: %.3f' % q1_non_english)
print('Q2 non-english books: %.3f' % q2_non_english)
print('Q3 non-english books: %.3f' % q3_non_english)
Q1 english books: 3.640
Q2 english books: 3.900
Q3 english books: 4.130
Q1 non-english books: 3.580
Q2 non-english books: 3.870
Q3 non-english books: 4.100

For both english and non-english books, the interquartile range(Q3-Q1) is quite small. This means that our data isn't really dispersed. The interqaurtile range is visualized by the length of the boxplot.

Q4 It seems reasonable to assume that authors with more fans should have more reviews, but maybe their fans are a bit lazy. Confirm or reject this with a convenient statistical test or a predictive model.¶

In [ ]:
from scipy.stats import pearsonr
In [ ]:
chunksize=10**4
chunks=[]

#chunking and data cleaning
for chunk in pd.read_json("lighter_authors.json", chunksize=chunksize, lines=True):
    chunk = chunk[['fans_count', 'text_reviews_count']]
    chunk['text_reviews_count'].replace('', np.nan, inplace=True)
    chunk['fans_count'].replace('', np.nan, inplace=True)
    chunk.dropna(subset=['text_reviews_count'], inplace=True)
    chunk.dropna(subset=['fans_count'], inplace=True)
    chunk['text_reviews_count']= pd.to_numeric(chunk['text_reviews_count'])
    chunk['fans_count']= pd.to_numeric(chunk['fans_count'])
    chunks.append(chunk)

#Creating a new dataframe
chunks = pd.concat(chunks, axis=0)
In [ ]:
print(max(chunks['fans_count']))
print(max(chunks['text_reviews_count']))
766035
608956
In [ ]:
print(min(chunks['fans_count']))
print(min(chunks['text_reviews_count']))
-33
0
In [ ]:
chunks=chunks[chunks['fans_count']>=0]

Since the maximum of the fans_count and text_reviews_count is too high, we can consider till the 99th Percentile of the values and do our statistical test on the filtered dataset.

In [ ]:
fans_max = np.quantile(chunks["fans_count"], q = 0.99) #considering the 99th Percentile
textreviews_max = np.quantile(chunks["text_reviews_count"], q = 0.99) #considering the 99th Percentile
In [ ]:
filtered_authors= chunks[(chunks["fans_count"] <= fans_max) & (chunks["text_reviews_count"] <= textreviews_max)]
In [ ]:
#Creating variables for the Pearsons Correlation
fans = filtered_authors['fans_count']
reviews = filtered_authors['text_reviews_count']

#Calculating the Pearsons Correlation
correlation, _ = pearsonr(fans, reviews)
print('Pearsons correlation: %.3f' % correlation)
Pearsons correlation: 0.703

The coefficient of 0.703 indicates a positive correlation. The more fans the author has, the more reviews the author gets.

In [ ]:
plt.scatter(filtered_authors["fans_count"], filtered_authors["text_reviews_count"], alpha=0.1)
plt.title("Scatterplot of Fans Count Vs Text Reviews Count")
plt.xlabel("Number of Fans")
plt.ylabel("Number of Text Reviews")
plt.show()

There is a strong relationship between the number of fans and number of text reviews according to the Pearson Correlation value of 0.703 which is close to +1.

In [ ]:
popular_authors= filtered_authors.nlargest(1000,'fans_count') #we are taking 1000 most popular authors
In [ ]:
less_popular_authors=filtered_authors.nsmallest(1000,'fans_count') #we are taking 1000 authors with lowest fans count
In [ ]:
plt.figure(figsize=(15, 5))
plt.subplot(1, 2, 1)  # Subplot with 1 row, 2 columns, first plot
plt.hist(popular_authors['text_reviews_count'], alpha=0.8, label='Popular Authors', color='gray')
plt.title('Text Reviews for Popular Authors')
plt.xlabel('Text Reviews')
plt.ylabel('Frequency')
plt.legend()
plt.subplot(1, 2, 2)  # Subplot with 1 row, 2 columns, second plot
plt.hist(less_popular_authors['text_reviews_count'], alpha=0.5, label='Less Popular Authors', color='green')
plt.title('Text Reviews for Less Popular Authors')
plt.xlabel('Text Reviews')
plt.ylabel('Frequency')
plt.legend()
Out[ ]:
<matplotlib.legend.Legend at 0x7d8cbc322290>

As the histogram shows, the popular authors have got more text reviews compared to the less popular authors.

Q5 Provide a short survey about helpful statistical tests in data analysis and mining: focus on hypothesis design and the difference between parametric and nonparametric tests, explaining the reasons behind the choice of one of these two tests.¶

In data analysis and mining, statistical tests are essential tools for drawing conclusions from data. These tests help researchers and analysts make informed decisions based on evidence. Hypothesis testing is usually done by formulating a null hypothesis, which states that there either is a certain relationship between variables or not. In a second step the prediction of the hypothesis is tested by observing data, which leads to a rejection or acceptance of the null hypothesis. The tests used for hypothesis testing can be divded in two groups: Parametric and nonparametric tests. The main difference between these kind of tests is that parametric tests make certain assumptions about the data (e.g. normally distributed, same variance, sampled randomly), while nonparametric tests don't do that and are more factual. Further for parametric tests the sample size needs to be bigger. We chose parametric tests as they can be computed and interpreted easier than nonparametric tests and we didn't see any of the assumptions about the data as violated.

Hypothesis Design:

  • Hypothesis testing is a fundamental process in data analysis. It involves formulating two competing hypotheses: the null hypothesis (H0), which typically represents the status quo or no effect, and the alternative hypothesis (H1), which represents the effect or relationship you want to test.

Parametric vs. Nonparametric Tests:

  • Parametric Tests:

    • Parametric tests assume that data follows a specific probability distribution, usually the normal distribution. They make certain assumptions about the data's characteristics, such as equal variances and normally distributed residuals.
    • Examples of parametric tests include t-tests, ANOVA, and linear regression.
    • Reasons for Choosing Parametric Tests:
      • When data follows a normal distribution or is approximately normal, parametric tests tend to be more powerful, providing more accurate and precise results.
      • Parametric tests can estimate population parameters, making them suitable for inferential statistics.
  • Nonparametric Tests:

    • Nonparametric tests, on the other hand, do not rely on specific data distribution assumptions. They are also known as distribution-free tests.
    • Examples of nonparametric tests include the Mann-Whitney U test, Kruskal-Wallis test, and Wilcoxon signed-rank test.
    • Reasons for Choosing Nonparametric Tests:
      • When data violates the assumptions of parametric tests, such as when it is not normally distributed or contains outliers, nonparametric tests can be more robust and appropriate.
      • Nonparametric tests are ideal for data on ordinal or nominal scales where calculating means and variances isn't meaningful.

Choosing the Right Test:

  • Key considerations include:
    • Data distribution: If the data is normally distributed, parametric tests are often preferred. For non-normally distributed data, nonparametric tests are more suitable.
    • Assumption violations: When assumptions like homogeneity of variances or normality are not met, nonparametric tests are a safer choice.
    • Research question: Consider the specific hypotheses you want to test and the nature of your data when selecting a test type.

In summary, hypothesis design and the choice between parametric and nonparametric tests are critical steps in data analysis and mining. Careful consideration of the data's characteristics and the research objectives will lead to more accurate and meaningful results. Both parametric and nonparametric tests have their strengths, and the choice between them should be guided by the properties of the data and the goals of the analysis.

Command Line Question:¶

Command Line Original Script:¶

In [ ]:
#!/bin/bash
echo "id|title|total_books_count"
cat series.json | jq -r '. as $parent | .works[] | [$parent.id, $parent.title, .books_count] | join("|")' | awk -F'|' '{a[$1"|"$2]+=$3} END{for (i in a) print i"| "a[i]}' | sort -t'|' -k3nr | head -5

Output of Original Script:¶

Output_Commnadline_Original.png

Command Line LLM Script:¶

In [ ]:
#!/bin/bash
echo "id|title|total_books_count"
jq -r '. as $parent | .works[] | [$parent.id, $parent.title, .books_count] | join("|")' series.json | awk -F'|' '{a[$1"|"$2]+=$3} END{for (i in a) print i"| "a[i]}' | sort -t'|' -k3nr | head -5

Output of LLM Script:¶

Output_Commandline_LLM.png

AWS Question¶

In [ ]:
from google.colab import drive
drive.mount('/content/drive')
%cd /content/drive/MyDrive/HW2
Mounted at /content/drive
/content/drive/MyDrive/HW2
In [ ]:
import pandas as pd
import time
#we store the start time of the script.
start_time= time.time()
#we initialise an empty list
tags_list = []
# we take a chunk size
chunk_size = 20000
# we initialize an empty list to store chunks
lists = pd.DataFrame()
# We Loop through each chunk and append it to the result dataframe
with open('list.json', 'r') as lists_set:
  for chunk in pd.read_json(lists_set, lines=True, chunksize=chunk_size):
        # We have to Flatten the lists of tags and extend the tags_list
        for tags in chunk['tags']:
            if isinstance(tags, list):
                tags_list.extend(tags)
tags_df = pd.DataFrame({'tags': tags_list})
tags_df.dropna(inplace=True)
# We now will count the usage of each tag
tag_counts = tags_df['tags'].value_counts().reset_index()
tag_counts.columns = ['tag', '#usage']
# We will Sort the DataFrame by usage count in descending order
sorted_tags = tag_counts.sort_values(by='#usage', ascending=False)

end_time= time.time()
# then we print the top tags and time taken
print(sorted_tags.head(5))
print(f"Time taken: {end_time - start_time:.2f} seconds")
               tag  #usage
0          romance    6001
1          fiction    5291
2      young-adult    5016
3          fantasy    3666
4  science-fiction    2779
Time taken: 74.91 seconds

I have used this as a script file in the name of aws_solution.py and have run the script from the command line. This is the attached screenshot below: ScriptinMacExec.png

As evident from the screenshot, the result came as expected and took 53.34 seconds in my own macbook.

Then I have created an AWS EC2 instance with the following specifications:

t3.large, volume=30giB Screenshot 2023-10-30 at 12.51.34 PM.png

Then I copied the AWS folder containing the necessary files from my system to EC2 instance after connecting to it from the command line as in the following screenshots: ConnectingAWSUbuntu.png

CopytoAWSUbuntu.png

Then I run the script commands in the aws ubuntu:

ScriptinUbuntu.png

In the EC2 ubuntu, it took 57.29 seconds to run the same script while it took 53.34 seconds in my own macbook.

Algorithmic Question (AQ):¶

In [ ]:
from collections import deque

# Read the number of instructions
num_instructions = int(input())

# Initialize a deque to represent the bookshelf
bookshelf = deque()

# Process each instruction
for _ in range(num_instructions):
    instruction = input().split()
    action, book_id = instruction[0], int(instruction[1])

    if action == 'L':
        # Place the book to the left of the leftmost existing book
        bookshelf.appendleft(book_id)
    elif action == 'R':
        # Place the book to the right of the rightmost existing book
        bookshelf.append(book_id)
    elif action == '?':
        # Calculate the minimum number of books to pop from both sides
        left_count = bookshelf.index(book_id)
        right_count = len(bookshelf) - left_count - 1
        # Print the result
        print(min(left_count, right_count))
8
L 75
R 20
R 30
L 11
? 75
1
L 12
L 15
? 20
1

''' 2---> According to LLM Chatbot tool :

To analyze the time complexity of the provided code, we can break it down into its main operations:

Looping through the boss's instructions: This operation takes O(n) time, where 'n' is the number of instructions. For each instruction, we perform the following operations: For 'L' or 'R' instructions, we append to the deque, which takes O(1) time. For '?' instructions, we use the index method to find the position of the book, which takes O(k) time, where 'k' is the position of the book in the deque. In the worst case, 'k' could be equal to the length of the deque, making it O(n). Printing the result in each '?' instruction takes O(1) time.

Given these considerations, the overall time complexity of the code is O(n^2) in the worst case, as the worst-case scenario occurs when each '?' instruction has to search through the entire deque, and there are 'n' such instructions. '''

'''We believe the instructions given by the LLM Chatbot tool is correct and upon observation with different input sizes we can see that the most expensive operation in the code is to calculate the ? instructions.'''

''' NO the code provided above is not the optimal code , we can reduce the time complexity of the above code by using a different data structure called dictionary. The time complexity for it can be reduced to O(n)

Algorithm:

Initialize an empty dictionary called book_positions

Initialize an empty list called bookshelf

Read num_instructions

For i in range(num_instructions): Parse the instruction into action and book_id

If action is 'L':
    Insert book_id at the beginning of bookshelf
    Store the position of book_id in book_positions

If action is 'R':
    Append book_id to the end of bookshelf
    Store the position of book_id in book_positions

If action is '?':
    Retrieve book_id's position from book_positions
    Calculate left_count as min(book_id's position, length of bookshelf - book_id's position - 1)
    Print left_count


efficient O(1) time complexity for the '?' instructions. '''